I should be able to see that the user visited Amazon.com and Facebook.com before.
No, non puoi accedere arbitrariamente alla cronologia di navigazione.
- Tu puoi scoprire quante voci ha la cronologia (
history.length
).
- Puoi puoi tornare a una di queste voci della cronologia (ad esempio
history.go(-2)
).
- Tu non puoi sapere quali sono queste voci, né il dominio né l'URL.
in order to manipulate the browsing history, the HTML5-App needs to read the history first.
Bene, i dettagli delle voci precedenti esistono in memoria, ma il browser li nasconde dagli script di contenuto. Altrimenti, essere in grado di accedere alla cronologia incrociata causerebbe ovviamente enormi problemi di privacy. Immagina solo che uno dei siti precedenti avesse un token di reimpostazione della password nell'URL.
If it's not true, can you explain to me how exactly this History-API works?
In HTML5 puoi manipolare lo stato dello stack cronologico, ad es. utilizzando history.pushState()
. Ciò è particolarmente utile per i siti Web con molte interazioni AJAX che desiderano modificare l'URL senza ricaricare l'intera pagina. 1 Tuttavia, puoi modificare l'URL solo per i percorsi che appartengono allo stesso dominio e puoi solo accedere gli oggetti di stato per la pagina corrente. Potete trovare ulteriori considerazioni di sicurezza in questa recensione sicurezza delle API di Mozilla.
(nota che in passato ci sono stati molte perdite di dati della cronologia di navigazione che potrebbero rivelare gli URL visitati attraverso canali laterali, ad esempio abusando delle proprietà CSS. Ma questi attacchi non sono direttamente correlati all'API.)
1 Può anche essere utile per un utente malintenzionato che desidera nascondere l'XSS riflesso nell'URL modificando dinamicamente il percorso verso qualcosa di meno sospetto. Ecco perché all'epoca questa estensione dell'API è stata piuttosto controversa .