¿Los filtros XSS de los navegadores protegen contra XSS basados en DOM?

2

Muchos navegadores (pero no todos) vienen con protección XSS incorporada que se puede activar con un encabezado HTTP:

X-XSS-Protection: 1; mode=block

Tal como lo entiendo, evita los ataques XSS reflejados al verificar que el documento no contenga partes de la cadena de consulta que tengan un aspecto sospechoso a medida que avanza. Para un SPA moderno esto no es muy útil. El HTML cargado directamente desde el servidor a menudo es solo estático, y todo lo interesante ocurre después de que la página se haya cargado.

¿Hay algún navegador que tenga filtros XSS que también impida XSS basados en DOM? Un filtro como ese comprobaría, por ejemplo, que algo pasado a .innerHTML no es un reflejo malicioso de la cadena de consulta ni de ninguna otra entrada del usuario, como un cuadro de texto.

¿Esto es una cosa? ¿Tengo algo que ganar al habilitar el filtro XSS en un SPA?

    
pregunta Anders 02.11.2018 - 09:09
fuente

2 respuestas

1

No creo que haya nada en ningún navegador exactamente como lo que estás describiendo. Sin embargo, una Política de seguridad de contenido podría lograr lo que está buscando, de una manera más sólida manera.

Por ejemplo, si su CSP impide que se realicen secuencias de comandos en línea, puede evitar que se ejecute cualquier JavaScript que se pase a innerHTML . Tenga en cuenta que las etiquetas script normalmente se eliminan de innerHTML , pero el CSP también evitaría que se ejecuten los atributos en línea on* . Por supuesto, esto significa que no podrá utilizar el script en línea usted mismo (al menos sin permitir explícitamente contenido de script específico), pero de todos modos, en general se considera una buena práctica.

    
respondido por el Alexander O'Mara 08.11.2018 - 22:45
fuente
-1

Tipos de confianza vendrán a deshacerse de DOM XSS.

Existen varias implementaciones de ellas, incluidas las características futuras de Chrome:

google-chrome-unstable --enable-blink-features=TrustedDOMTypes --enable-experimental-web-platform-features

O polyfill separado: enlace

O incluso tinyfill como este: TrustedTypes={createPolicy:(n, rules) => rules}

Descripción detallada disponible aquí: enlace

    
respondido por el odo 02.11.2018 - 10:29
fuente

Lea otras preguntas en las etiquetas