Entonces, ¿qué tan malo puede ser este tipo de ataque, a pesar de que no tiene acceso a los elementos DOM actuales?
Es peor que los ejemplos bastante limitados en el artículo vinculado: en Firefox y Opera, data:
URIs do operan en el mismo contexto de seguridad que el documento que los incluye, y por lo tanto puede acceder a elementos DOM en su dominio. Esto no ocurre en Chrome / Safari, o IE9 (que deliberadamente solo tiene soporte parcial para data:
URIs).
En el caso de que se puedan incluir documentos HTML, esto conlleva los mismos riesgos que el XSS convencional. Principalmente son marcos y enlaces, pero son posibles otros ataques (*).
ejemplo: enlace : crea un enlace y un iframe, inyectando el documento HTML que escribe en los datos: URL en ambos. El código en el documento vinculado / enmarcado recoge el contexto de seguridad de jsbin.com, lo que le permite alertar sobre el código fuente de la página de índice de jsbin.
Por consiguiente, debe considerar que data:
URI es tan riesgoso como javascript:
URI, y rechazarlos en todos los sitios donde su aplicación web permita que se envíen URI. (Realmente, lo mejor es incluir en la lista blanca los esquemas de URI para mantener una selección limitada, como http
/ https
).
(*: por ejemplo: ponga un URI de data:text/html...
enviado por el atacante en un <img src>
y la imagen no funcionará. Pero si el usuario puede ser engañado en la imagen de clic con el botón derecho, habría cargue el recurso como HTML, resultando en XSS.)