La teoría
El 99.9% de todo el JavaScript que se sirve en la web es estático, por ejemplo. Lo mismo no importa qué valores tenga cualquier cookie o cualquier otra cosa. Es solo un archivo que se sirve como está desde el servidor, al igual que una imagen JPG ordinaria.
Sin embargo, en algunos casos, el JavaScript puede generarse dinámicamente (usando un lenguaje como PHP), y una solicitud podría producir resultados diferentes si se realiza con o sin cookies. En estos casos excepcionales, puede haber una vulnerabilidad XSSI.
La generación de JavaScript dinámico es una práctica de diseño horrible y no es algo que se espera que hagan los desarrolladores bien entrenados. Así que no esperes encontrar vulnerabilidades como esta fácilmente. Pero seguro, están ahí fuera, en algún lugar ... Pero si supiera dónde encontrarlos, no te lo diría, estaría divulgando las vulnerabilidades de manera responsable a los propietarios de los sitios.
Un ejemplo
Digamos que estoy escribiendo una página web donde los usuarios pueden pasar mensajes secretos entre sí, alojados en secretmessage.com
. La página web comprueba si hay nuevos mensajes al cargar new_messages.js
desde el servidor. El contenido de ese archivo se genera con PHP como este (tenga en cuenta que el resultado será diferente dependiendo de las cookies en la solicitud):
<?
session_start();
$user_id = $_SESSION["user_id"];
?>
var latestMessage = "<?= $database->getLatestMessage($user_id); ?>";
La ejecución de esa secuencia de comandos pondrá el último mensaje para el usuario que realiza la solicitud en una variable JS, que luego puedo enviar a cualquier lugar. Genial, ¿no es así? Bueno, no ...
Ahora imagine que el malvado atacante crea una página ( http://evil.com
) que incluye http://secretmessages.com/new_messages.js
en una etiqueta de script. El navegador solicitará debidamente el new_messages.js
de secretmessages.com
con cookies y todo, incluida la cookie de sesión. El contenido de latestMessage
se podrá leer desde el código en evil.com
. Así que todo lo que el atacante tiene que hacer para leer los mensajes secretos de las personas es engañarlos para que visiten evil.com
.