Tenemos una aplicación web interna que actúa como un repositorio en el que los usuarios pueden cargar archivos. Estos archivos pueden tener cualquier formato, incluidas las páginas HTML.¿Cómo se puede evitar XSS en las descargas de HTML?
Hemos probado que en IE8, si descarga un archivo HTML que contiene algún script que intenta acceder a sus cookies y, después de la descarga, elige la opción "Abrir", el script ejecuta y obtiene su información de cookies sin problemas en absoluto.
En realidad, esa secuencia de comandos podría usar el objeto XmlHttpRequest para llamar al servidor y realizar algunas operaciones maliciosas dentro de la sesión del usuario que descargó el archivo.
¿Hay alguna manera de evitar esto? Hemos probado que tanto Chrome como Firefox no permiten que esto suceda. ¿Cómo se puede evitar este comportamiento en cualquier navegador, incluido IE8?
¿Qué significa "Abrir" en realidad? Mostrar la página en el navegador? Si es así, ¿cuál es la URL de la página cuando eso sucede? – bzlm
@bzlm: Es como con cualquier archivo adjunto; si fuerza al navegador a solicitar la ventana de descarga (disposición del contenido), puede hacer clic en abrir, y se abre usando la url usada para cargarlo, que obviamente está en el mismo dominio que sus cookies, de ahí mi sugerencia de ejecutando (las descargas) en un dominio alternativo. –
@bzlm está en el camino correcto: si abre un archivo HTML localmente, no podrá acceder a las cookies ni emitir solicitudes Ajax a un servidor remoto debido a la política de dominio único. Solo si se abre directamente en el servidor es posible. –