¿XSS llegó al final de su vida útil con la introducción del encabezado HTTP X-XSS-Protection?
No. X-XSS-Protection
solo se usa para habilitar o deshabilitar el filtrado integrado [*], que generalmente está habilitado de forma predeterminada de todos modos.
Entonces, una pregunta más adecuada sería si XSS alcanzó su fin de vida con los filtros del navegador.
Pero de nuevo, la respuesta es no. XSS sigue siendo un peligro, debido a tres razones:
-
XSS persistente no se ve afectado en absoluto por el filtrado del navegador, ya que el navegador no tiene forma de saber qué aportan los usuarios y qué no.
-
Algunos navegadores no tienen filtros contra XSS , por ejemplo, Firefox. Las vulnerabilidades de XSS se introducen en el lado del servidor y los desarrolladores web no deben confiar en que los proveedores de navegadores se defiendan contra ellos.
-
Omisión de los filtros del navegador : XSS es sensible al contexto, lo que hace que sea muy difícil defenderse sin conocer el contexto (que es también la razón por la que XSS debe defenderse al generar datos, no a través de algún filtro de entrada genérico).
La omisión puede ocurrir básicamente por dos razones:
- Hay un error en el filtro.
- La entrada del usuario se repite en una ubicación donde el filtrado no es práctico. Un ejemplo sería
<script>[userinput]</script>
.
[*] Como el encabezado no está definido en ningún RFC, es difícil decir cómo reaccionarán los navegadores. Por ejemplo, Chrome 51 deshabilitará su filtro si el encabezado se establece en 0, pero no volverá a habilitar el filtro en caso de que el usuario lo deshabilite si se establece 1. Otros navegadores pueden comportarse de forma diferente.
Lo que podría ser tan simple como "No admitimos los navegadores X, X y X y las versiones X y anteriores".
Realmente no es tan simple. Especialmente las organizaciones grandes son notoriamente malas en la actualización. Dependiendo de su sitio web, no puede simplemente decir que no es compatible con los navegadores X.
En segundo lugar, ¿qué (popular) los navegadores implementaron esta función de seguridad, está habilitada de forma predeterminada, y desde qué versión o en qué fecha se lanzó esa versión?
X-XSS-Protection
es compatible con IE, Chrome y Safari .
Chrome tenía un filtro XSS desde 2010 (Chrome 4) . Fue desactivado de forma predeterminada en el mismo año, y luego se volvió a habilitar en Chrome 8.
IE tenía un filtro XSS desde 2008 (IE 8) .
Firefox no tiene un filtro , aunque el complemento NoScript sí lo tiene.
En tercer lugar, ¿existen derivaciones conocidas de ese filtro XSS de los navegadores?
Sí . Por supuesto . Hay mas. La mayoría depende de alguna situación específica (por ejemplo, la entrada se repite en dos ubicaciones). El filtro IE8 en realidad introdujo una vulnerabilidad XSS , incluso en sitios que no la contenían.