<strong>Hello</strong> World
Introducción
Seguridad Web con NextJS y OWASP Top 10
Validación de entradas
Prevención de Inyecciones SQL en Aplicaciones Web
Validación de Datos de Usuario en Formularios Web
Inyección de Ataques XSS y Prevención con Sanitized HTML
Buenas prácticas de seguridad en JavaScript: manejo de texto y validación
Autenticación rota
Autenticación Rota: Vulnerabilidades y Soluciones Prácticas
Protección de Sesiones y Recursos en Aplicaciones Next.js
Manejo Seguro de Sesiones y Cookies en Aplicaciones Web
Almacenamiento seguro de tokens JWT: Session Storage y cookies HTTP Only
Estrategias Seguras para Manejo de Sesiones y Autenticación
Exposición de datos sensibles
Protección de Datos Sensibles en JWT y Tokens de Sesión
Seguridad en Tokens JWT: Firma y Encriptación con NextAuth
Próximos pasos
Fortalecimiento de Seguridad en Aplicaciones NextJS y NextAuth
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La seguridad en el desarrollo web es esencial para proteger tanto a los usuarios como a las aplicaciones. Uno de los ataques más comunes es el Cross-Site Scripting (XSS), que puede inyectar scripts malintencionados en páginas web. En este artículo, exploraremos cómo identificar una vulnerabilidad XSS en una aplicación Next.js, usando un proyecto llamado Plantpedia como ejemplo.
Plantpedia es un proyecto implementado para practicar habilidades en el desarrollo de sitios estáticos con Next.js. Si aún no tienes este proyecto, te sugiero seguir estos pasos para prepararte:
El sitio web denominado "El Muro" permite a los usuarios autenticarse y compartir mensajes. Sin embargo, un análisis más detallado revela que existe una vulnerabilidad potencial de XSS. Cuando se ingresa texto en el campo de entrada, este texto se procesa y se muestra utilizando dangerouslySetInnerHTML
de React. Aunque útil para incluir HTML directamente, este enfoque, si no se maneja adecuadamente, puede ser la fuente de un ataque XSS.
El saneamiento de datos es el proceso de limpiar o modificar los datos de entrada para evitar la ejecución de código no deseado. En el contexto de un ataque XSS, esto se logra manipulando el texto de entrada y eliminando cualquier script o etiqueta HTML peligrosa antes de mostrarlo.
Para mitigar esta clase de ataques, se recomienda el uso de la biblioteca sanitize-html
, la cual ayuda a eliminar las amenazas potenciales de XSS mediante la "limpieza" del HTML entrante.
Para abordar correctamente las vulnerabilidades XSS, podemos integrar la biblioteca sanitize-html
en nuestro proyecto. Sigue estos pasos para instalar y usarla:
Instalación: Abre tu terminal e instala la biblioteca junto con sus tipos para TypeScript.
yarn add sanitize-html
yarn add @types/sanitize-html
Configuración y uso: A continuación, debes incorporar el saneamiento en el ámbito adecuado dentro de tu aplicación.
import sanitizeHtml from 'sanitize-html';
const safeHtml = sanitizeHtml(userInput, {
allowedTags: ['strong', 'a', 'em', 'b'],
allowedAttributes: {
'a': ['href'],
}
});
Integración en el componente: Puedes aplicar esto directamente en el componente editor
que maneja las entradas de usuario para asegurar el procesamiento seguro del texto:
const handleSubmit = (input: string) => {
const cleanHtml = sanitizeHtml(input);
// Subsecuente manejo del dato seguro
};
La configuración anterior asegura que solo se permitan etiquetas HTML específicas y elementos seguros, eliminando potenciales scripts de inyección antes de presentar cualquier contenido. Es crucial para mantener la seguridad de la aplicación web, protegiendo tanto la integridad del sistema como la experiencia del usuario.
Es vital adoptar el saneamiento de datos en cualquier aplicación web que interprete HTML o JavaScript del lado del cliente. Aquí algunas recomendaciones adicionales:
Server-Side Rendering (SSR): Si usas SSR con Next.js, asegúrate de que tus datos estén igualmente saneados antes de ser enviados al cliente.
Actualizaciones regulares: Mantén tu biblioteca sanitize-html
actualizada para beneficiarte de las últimas mejoras y soluciones de seguridad.
Revisión de código: Audita regularmente tu código para identificar y solucionar vulnerabilidades potenciales.
Con un enfoque proactivo hacia la seguridad, como el uso adecuado de sanitize-html
, estarás mejor preparado para prevenir ataques XSS en tu aplicación. ¡Sigue aprendiendo y mejorando tus habilidades de desarrollo, y no olvides siempre priorizar la seguridad en el diseño de software!
Aportes 14
Preguntas 4
<strong>Hello</strong> World
<span onclick=“alert(‘La mejor educación’)” >Holiwis</span>
Commit de la clase, incluye la configuracion de los tags que no se mostraron en la clase.
Commit - https://github.com/NightDreams/platzi-plantpedia/commit/e5e019111bbdfc64ee14de3d6597d5f26c0a099f
Mi comentario no es malicioso jeje
Este te︀︁xto pesa más de lo normal :p
sanitize-html Para sanitizar los elementos html y que no les inyecten código.
Mi hola en <strong>negrita</strong>
<strong onclick="window.alert('👨💻👨💻👨💻')">Holi</strong>El código no es malicioso.
<strong>Hello</strong> World
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?