Estoy tratando de entender cómo funciona XSS y me topé con los juegos XSS de Google ( enlace ).
El nivel 1 se puede solucionar fácilmente con el XSS más común ( <script>alert(0)</script>
). Sin embargo, si lo intentas en el nivel 2 no funciona. Es posible cargar un img con el código de alerta dentro de un atributo onerror:
. Sin embargo, estoy tratando de entender cómo filtra las etiquetas de script, y después de colocarlas, las veo en la respuesta de los servidores EXACTAMENTE cómo las ingresé (pero sin mensaje de alerta). Como lo entiendo, si el navegador ve un <script>alert(0)</script>
, siempre lo ejecuta. Todas las soluciones para XSS que conozco implican el filtrado del contenido antes de mostrarlo.
Mis preguntas son, ¿cómo impide Google que funcione el XSS y en qué condiciones un navegador ve el código HTML con <script>alert(0)</script>
y no lo ejecuta?
Editar: la primera pregunta fue un duplicado, y la respuesta es colocar el contenido dentro de un HTML interno. Sin embargo, la segunda pregunta sigue siendo, ¿hay alguna otra manera de implementar esto?