Es html escape suficiente para mitigar xss en el atributo html si el valor está encerrado entre comillas dobles

1

Como se menciona en Owasp Output_Encoding_Rules_Summary ¿Por qué? con la entidad HTML & #xHH; formato, incluyendo espacios].

¿Es posible realizar un ataque xss si se incluye un atributo html entre comillas dobles (") y nos estamos escapando solo de cinco caracteres?

Nota: excluir javascript: protocolos en src / href

  

Convertir & a & amp; Convertir < a & lt; Convertir > a & gt; Convertir a   & quot; Convertir 'a & # x27;

    
pregunta akr 23.11.2016 - 14:21
fuente

1 respuesta

1

No, eso no es posible (tenga en cuenta que la regla es sobre los atributos comunes de HTML y que se excluyen específicamente otros atributos como href, src, estilo y controladores de eventos).

El motivo por el que existe la regla se encuentra en el mismo documento que cita:

  

A excepción de los caracteres alfanuméricos, elimine todos los caracteres con valores ASCII menores a 256 con el & #xHH; Formato (o una entidad nombrada si está disponible) para evitar el cambio del atributo. 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 pueden dividirse con muchos caracteres, incluido [espacio]% * +, - /; < = > ^ y |.

La exclusión de atributos no comunes es realmente relevante en la práctica. Considera esto por ejemplo:

<img src="no" onerror="alert('[some user input]')">

Un atacante puede realizar un ataque XSS a través de ');alert('1 si las comillas simples están codificadas en HTML. La entrada se transformaría a &#39;);alert(&#39;1 , que se analizaría mediante el analizador HTML del navegador, que luego la pasa, en forma decodificada, al motor de JavaScript.

    
respondido por el tim 23.11.2016 - 14:29
fuente

Lea otras preguntas en las etiquetas