Hay una manera perfectamente buena de detener los ataques de secuencias de comandos entre sitios. Escape sensible al contenido; por ejemplo, si el contenido generado por el usuario se inserta como contenido en un documento HTML, entonces HTML-escape &<>"'/
(posiblemente permita una pequeña lista blanca de etiquetas permitidas como <b>
o escape todo y use un lenguaje seguro similar a markdown para permitir una pocas etiquetas), si el contenido generado por el usuario se inserta en javascript, luego javascript lo escapa, etc. (Consulte OWASP para más detalles .)
Este ataque fallará gravemente cuando alguien intente usarlo para evitar ataques en páginas web generadas dinámicamente.
Imagina que tienes una página web que lee tu comentario de una base de datos y coloca ese comentario en una página HTML que se entrega al usuario.
Usted escribe su página HTML como tal:
<disablescripts>
{{ untrusted_user_content_read_from_db }}
</disablescripts>
Bueno, cuando {{untrusted_user_content_read_from_db}}
se establece en el valor:
</disablescripts><script>alert("XSS -- gotcha!");</script><disablescripts>
entonces este método de prevención falla porque el servidor web acaba de enviarse a su navegador a través de la página web html como:
<disablescripts>
</disablescripts><script>alert("XSS -- gotcha!");</script><disablescripts>
</disablescripts>