Seguridad en JavaScript

Conceptos básicos de seguridad: XSS, CSRF.

En el desarrollo de aplicaciones web, la seguridad es un aspecto fundamental que debe ser considerado para proteger tanto a los usuarios como a las plataformas de ataques maliciosos. Entre los tipos de ataques más comunes y perniciosos están Cross-Site Scripting (XSS) y Cross-Site Request Forgery (CSRF). Este capítulo proporciona una introducción detallada a estos ataques, explicando cómo funcionan y cómo se pueden mitigar.

Cross-Site Scripting (XSS)

XSS es una vulnerabilidad de seguridad que permite a un atacante inyectar scripts maliciosos en páginas web vistas por otros usuarios. Este tipo de ataque explota la naturaleza de cómo los navegadores web procesan el HTML y JavaScript para ejecutar el script en el contexto del navegador de la víctima.

  1. Tipos de XSS:

    • XSS Reflejado: El script malicioso es parte de los datos de entrada que son enviados al servidor, como parámetros en una URL, y luego reflejados de vuelta en la respuesta del servidor.
    • XSS Almacenado: El script malicioso se guarda en el servidor (por ejemplo, en una base de datos) y se sirve a todos los usuarios que acceden a la parte vulnerable de la aplicación.
    • XSS DOM-based: El script malicioso no llega al servidor, sino que es parte de una manipulación DOM en el navegador del usuario, generalmente a través de la modificación de la estructura del DOM.
  2. Prevención de XSS:

    • Validación de Entrada: Asegúrate de que las entradas de los usuarios sean validadas adecuadamente para evitar la inclusión de scripts maliciosos.
    • Codificación de Salida: Codifica la salida para que los caracteres que puedan formar parte de un script sean inofensivos. Herramientas y bibliotecas como OWASP ESAPI proporcionan funciones de codificación.
    • Política de Seguridad de Contenido (CSP): Utiliza CSP para reducir el riesgo de XSS especificando qué recursos pueden ser cargados por la aplicación.

Cross-Site Request Forgery (CSRF)

CSRF es un ataque que engaña a un usuario final para que ejecute acciones no deseadas en una aplicación web en la que están autenticados actualmente. Utilizando la autenticación del usuario, un atacante puede forzar la ejecución de solicitudes no autorizadas.

  1. Cómo Funciona CSRF:

    • Un ataque típico de CSRF podría implicar un correo electrónico o un sitio web malicioso que contenga un enlace o un formulario oculto que realiza una solicitud a una aplicación en la que el usuario ha iniciado sesión.
  2. Prevención de CSRF:

    • Tokens CSRF: Usa tokens anti-CSRF, que son generados por el servidor y deben ser incluidos en cada solicitud segura enviada. El servidor verifica la presencia del token antes de procesar cualquier acción.
    • SameSite Cookies: Configura las cookies con el atributo SameSite para que sólo sean enviadas en solicitudes del mismo sitio, bloqueando las enviadas por sitios de terceros.
    • Verificar el Encabezado Referer: Asegúrate de que las solicitudes vengan de fuentes confiables verificando los encabezados HTTP referer.