¿Por qué debería convertir & en la prevención de XSS?

6

En su REGLA # 1, OWASP sugiere que & debe estar codificado como & antes de que se inserte en una página HTML. Sin embargo, en los casos a continuación:

<tag>userInput</tag>
<tag attribute="userInput"></tag>

Si solo me escapo de los cuatro caracteres < , > . ' y " , pero no & , ¿hay alguna carga útil que aún pueda causar XSS? ¿O hay algún caso en el que se deba escapar a & para evitar las vulnerabilidades de XSS?

    
pregunta z3tt4 08.05.2018 - 05:53
fuente

3 respuestas

3

Como dicen los comentarios y de su documento vinculado:

  

La regla # 1 es para cuando desea colocar datos no confiables directamente en el cuerpo HTML en algún lugar. Esto incluye dentro de etiquetas normales como div, p, b, td, etc.

Por lo tanto, su pregunta puede responderse con "porque aplica la regla incorrecta para su contexto".

Pero para citar la regla aplicable también:

  

La razón por la que esta regla es tan amplia es que los desarrolladores frecuentemente dejan los atributos sin comillas. Los atributos citados correctamente solo pueden escaparse con la cita correspondiente. Los atributos sin comillas se pueden desglosar con muchos caracteres, incluido [espacio]% * +, - /; < = > ^ y |.

Entonces, sí, si usas comillas en los atributos de forma consistente y siempre , solo debes escapar de ellos. Pero eso solo necesita un resbalón y las cosas se desmoronan, por lo que la regla general es ser más riguroso de lo absolutamente necesario.

    
respondido por el Tobi Nary 08.05.2018 - 12:02
fuente
1

La codificación de & a &amp; no lo salvará de ningún ataque XSS, pero es necesario para codificar correctamente el texto que un usuario ingresa en HTML.

Por ejemplo, si no lo haces, entonces un usuario que quiera hablar sobre entidades HTML y escriba los cinco caracteres & a m p ; verá que el sitio muestra su Texto como & en su navegador. Un usuario que habla sobre la prevención XSS que explica < to &lt; verá su texto representado en el sitio como < to < , confundiendo a todos. A menos que usted advierta específicamente a los usuarios que sus publicaciones se interpretarán (parcialmente) como HTML y que deberían codificar por entidades sus propias publicaciones, es algo que debe hacer para corregir, no necesariamente de seguridad.

    
respondido por el Macil 09.05.2018 - 02:01
fuente
-1

&quot; puede ser dañino, como sugerían otros.

Y con DOM simple, incluso las reglas CORS se pueden omitir.

Edit: gracias @Anders, el código que supuestamente debía trabajar no funcionó.

    
respondido por el user9600383 08.05.2018 - 12:10
fuente

Lea otras preguntas en las etiquetas