Že od začetka spleta brskalniki prikazujejo že obiskane spletne naslove z drugačno barvo, kot tiste, na katerih še nismo bili. Brskalnik vodi namreč zgodovino brskanja, ki nam tega dostikrat zelo olajša. Z uvedbo CSS stilov (cascading style-sheets) pa je oblikovalec oz. avtor spletne strani dobil še veliko več možnosti za to razlikovanje in je obiskane povezave na strani lahko poljubno oblikoval s pomočjo atributa visited. Avtorja Artur Janc in Lukasz Olejnik pa sedaj razkrivata, kako je mogoče to funkcionalnost izkoristiti za pregledovanje (oz. bolj testiranje) uporabnikove zgodovine brskanja.
V poenostavljeni obliki se izkoristi ranljivost tako, da za obiskane strani avtor določi neko specifično lastnost (barvo, velikost, …), zraven pa strani doda JavaScript kodo, ki za spletne naslove z vnaprej pripravljenega seznama preveri, ali imajo povezave to lastnost (seznam ni nujno izpisan na spletni strani, lahko ostane skrit).
Testiranje vaše zgodovine brskanja pa je možno tudi, če izklopite JavaScript, saj se lahko izvede samo s CSS stilom (primer vzet iz http://wtikay.com/docs/details.html):
<style> a#link1:visited { background-image: url(/log?link1_was_visited); } a#link2:visited { background-image: url(/log?link2_was_visited); } </style> <a href="http://google.com" id="link1"> <a href="http://yahoo.com" id="link2">
V zgornjem primeru vsaka od definiranih povezav sproži poizvedbo nazaj na strežnik in tako lahko upravitelj zabeleži, kdo je navedene naslove že obiskal.
In rešitev? Glede na to, da gre za pomanjkljivost v zasnovi, ne bo enostavna oz. bo temeljila na tem, da se določena funkcionalnost odstrani iz CSS implementacij in JavaScript funkcij.
Povezave: