¿Cómo puede la Política de seguridad de contenido (CSP) reducir significativamente el riesgo y el impacto de los ataques XSS en los navegadores modernos?
¿Es posible eludir CSP para ejecutar XSS?
Sí, el CSP tiene un largo camino para defenderse contra XSS. Si realiza una búsqueda en Google sobre "Política de seguridad de contenido XSS", los primeros enlaces explican cómo y por qué.
Si tiene problemas para usar Google, aquí hay algunos buenos enlaces para ayudar a explicar cómo defiende CSP contra XSS:
Una Introducción a la Política de Seguridad de Contenido de Mike West
Una introducción a la política de seguridad de contenido de David Müller
Uso de la Política de seguridad de contenido para evitar la cruz Site Scripting (XSS) : SendSafely.com explica cómo utilizan CSP en su sitio.
Las promesas de la Política de Seguridad de Contenido para proteger la web
El navegador aplica la política de CSP. Por lo tanto, suponiendo que haya establecido una política de CSP adecuada, y suponiendo que su navegador no tenga errores, no hay manera de evitar el CSP. Esa es una de las atracciones de la CSP.
Tenga en cuenta que algunos navegadores (por ejemplo, IE10 y versiones anteriores de IE, si recuerdo bien) no son compatibles con CSP.
Tenga en cuenta que la CSP no es una bala de plata:
CSP no detiene el XSS basado en DOM (también conocido como XSS del lado del cliente) si habilita 'unsafe-eval' en su política de CSP. Para evitar XSS basados en DOM, debe escribir su Javascript con cuidado para evitar la introducción de tales vulnerabilidades.
El CSP detiene la mayoría de las formas de inyección de scripts, pero no detiene la inyección de marcado: vea, por ejemplo, Postales desde el post- XSS world , así como el ataque de inyección de formularios HTML de la Sección III-A de Autoexfiltración: Los peligros del control de flujo de información forzado por el navegador (Chen et al, W2SP 2012). Por lo tanto, aún querrá evitar introducir errores de inyección en su código.
Vea también Algunas cosas más allá del alcance de la Política de seguridad de contenido para obtener más información sobre algunos problemas que CSP no resuelve.
CSP funciona al imponer que ciertas políticas de contenido se colocan en los scripts, por ejemplo. "no hay scripts externos", o "no hay scripts en línea". Esto hace que XSS sea mucho más difícil, ya que el 99% de los casos de XSS involucran scripts en línea o referencias a scripts fuera del sitio. El único inconveniente es que prácticamente prohíbe el JavaScript por completo, y puede ser muy difícil producir un sitio habilitado para JavaScript que se adhiera al CSP.
Omitir puede ser posible, dependiendo de la política utilizada y del tipo de vulnerabilidad que tenga, pero en general es un sistema bastante sólido. Para sitios con contenido confidencial y sin JavaScript, recomiendo establecer una política restrictiva.
Lea otras preguntas en las etiquetas xss content-security-policy