De hi.baidu.com/monyer/blog/item/d0f5d8b48fc442758bd4b2a4.html¿Este horrible vector XSS sigue siendo un problema en Internet Explorer?
Char 192 es
<font face="xyz[0xC0]">not </font><font face=" onmouseover=alert(192) s=[0xC0]" >available</font>
0xC0 es uno de los 32 primeros bytes de secuencias de 2 bytes (0xC0-0xDF) en UTF-8. Entonces cuando IE analiza el código anterior, considerará 0xC0 y la siguiente cita como una secuencia, y por lo tanto estos dos pares de elementos FONT se convertirán en uno con
"xyz[0xC0]">not </font><font face="
como el valor del parámetro FACE. El segundo 0xC0 iniciará otra secuencia de 2 bytes como un valor del parámetro NOTEXIST que no se cita. Debido a un carácter de espacio seguido por la cita, 0xE0-0xEF que son primeros bytes de secuencias de 3 bytes, junto con la siguiente cita y un carácter de espacio se considerarán como el valor del parámetro NOTEXIST.
Básicamente, ciertos bytes indican el inicio de un carácter de 3 bytes en una cadena UTF-8. Si esos bytes ingresan en una página web, IE consumirá los siguientes dos bytes , incluso si los tres bytes resultantes no forman un carácter UTF-8 válido. Esto puede hacer que IE comas citas finales en atributos HTML, causando estragos en XSS.
El artículo está sobre IE6, así que tengo dos preguntas acopladas herméticamente:
- Es ésta sigue siendo un problema en las versiones posteriores de Internet Explorer?
- Si es así, ¿existe un método puramente del lado del cliente para evitarlo? En otras palabras, suponiendo que se recibe una cadena "envenenada" del servidor, ¿hay algo que se pueda hacer desde el lado del cliente para evitar esta vulnerabilidad?
@Karl Agradezco la edición, pero estaba tratando de evitar el enlace a ese sitio, ya que parecía ser un poco cutre. No estoy seguro acerca de las reglas relacionadas con los enlaces a los sitios aquí. ¿Crees que debería ser un enlace (pregunta honesta)? – ClosureCowboy
La página es realmente cutre :) No sé si hay alguna regla, así que no la vinculemos. –
Podría ser que no tengo idea de qué está pasando realmente. Pero probé esto en JSFiddle en IE9, y no hubo mouseover. – sdleihssirhc