¿Para qué tipos de contenido se recomienda configurar el encabezado X-XSS-Protection?

6

Probablemente, uno pueda sugerir establecer este encabezado para todas las respuestas de un servidor web (estoy pensando en value="1; mode = block").

Sin embargo, ¿tiene sentido configurarlo al servir imágenes, por ejemplo? Archivos CSS? ¿Respuestas de JSON hechas a partir de llamadas AJAX?

¿A XSS Auditor le importa la presencia de este encabezado al procesar estas respuestas?

    
pregunta oldbam 09.02.2017 - 19:22
fuente

2 respuestas

4

Si decide utilizar X-XSS-Protection , debe configurarlo para cualquier página que pueda ejecutar contenido de script activo. Los formatos no ejecutables como CSS o imágenes no se ven afectados por el encabezado.

Tenga en cuenta que las imágenes SVG, a pesar de poder ejecutar el código de script, aparentemente no respetan el encabezado en Chrome, lo que sugiere que solo se aplica a documentos HTML. Prueba de concepto:

<?php
header('X-XSS-Protection: 1; mode=block');
header('Content-type: image/svg+xml');
?>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg">
<?php echo $_GET['foo']; ?>
</svg>

Ejecutalo en tu navegador de esta manera: http://localhost/xss.php?foo=<script>alert(1)</script>

En mis pruebas, el JS reflejado del parámetro se ejecuta aunque el filtro XSS está activo. Pero si cambia el tipo de contenido a text/html , el JS se filtrará correctamente.

(Tenga en cuenta que el uso del encabezado X-XSS-Protection es controvertido y puede da como resultado nuevas vulnerabilidades, por lo que Facebook incluso decidió desactivar por completo el auditor XSS. Y tenga en cuenta que configurar el encabezado no reemplaza el escape adecuado de la salida).

    
respondido por el Arminius 09.02.2017 - 21:57
fuente
1

Este encabezado tiene sentido para cualquier página que pueda ejecutar Javascript. Esto incluye archivos HTML, y quizás SVG y XML, pero no archivos Javascript o respuestas JSON, ya que estos no se ejecutan en el navegador simplemente visitándolos.

    
respondido por el Sjoerd 09.02.2017 - 21:24
fuente

Lea otras preguntas en las etiquetas