Recuerdo haber leído algo hace un rato acerca de los ataques XSS exitosos cuando se usaba la técnica de codificación incorrecta para el contexto. En particular, recuerdo esto cuando la codificación HTML en el contexto de Javascript, para el valor del atributo de una etiqueta que representa un gancho de Javascript, como onload. Por ejemplo,
<body onload='doSomething ("userdata")'>
donde el servidor HTML codifica los datos del usuario antes de escribir el HTML sobre el socket en el navegador.
Como recuerdo, el navegador primero analizaría la página en busca de HTML, descodificando el valor del atributo, deshaciendo la codificación HTML de los datos del usuario. El siguiente navegador analizará JavaScript. Si los datos de usuario se crearon como una carga útil XSS, como
x")&&alert ("xss
ahora sería ejecutado. Por mi vida, ya no puedo encontrar las referencias relevantes que demuestran este comportamiento, ni puedo recordar si el orden de análisis tiene otras sutilezas, como si los estilos de codificación HTML o las URL produzcan vulnerabilidades de XSS. O si hay problemas de orden de análisis con la codificación entre URL, CSS y JS.
¿Qué referencias demuestran que la codificación con qué mecanismos en el contexto incorrecto darán como resultado vulnerabilidades continuas de XSS y cuáles solo causarán problemas de uso?