Los ataques XSS ocurren cuando una aplicación web utiliza la entrada de un usuario sin validarla o sanitizarla adecuadamente.
Esta vulnerabilidad puede estar presente de las siguientes formas: Supongamos que un sitio web tiene la siguiente forma: http://www.example.com/home.asp?frame=menu.asp y que al acceder se creará un documento HTML enlazando con un frame a menu.asp.
En este ejemplo, ¿qué pasaría si se pone como URL del frame un código javascript?
Si este enlace lo pone un atacante hacia una víctima, un visitante podrá verlo y verá que es del mismo dominio, suponiendo que no puede ser nada malo y de resultado tendrá un bucle infinito de mensajes.
Quiere ello decir que la víctima ve en la barra de direcciones un sitio, pero realmente está en otra.
Una página como la siguiente: es probablemente vulnerable a XSS indirecto, ya que si escribe en el documento "Usuario Inválido", esto significa que un atacante podría insertar HTML y JavaScript si así lo desea.