[PHP] Browser fingerprints, czyli jak przeglądarka zostawia ślad po sobie i jak to wykorzystać?
Na pewno często uważasz, że jesteś anonimowy w sieci i że potrafisz się dobrze zabezpieczyć przed wykryciem przez inne osoby. Niestety, jest to błędne podejście. A to dlatego, że jak pokazuje eksperyment przeprowadzony przez Panopticlick, nawet Twoja przeglądarka może pozostawić po sobie unikalny ślad dzięki któremu ktoś będzie wiedział, że Ty to Ty. No i wpadłem na pomysł jak to można wykorzystać na stronach WWW.
Język PHP jest na tyle dobrym językiem, że potrafi wyciągnąć jakieś informacje związane z przeglądarką i systemie komputerowym. Dlatego moją propozycją do sposobu autoryzacji użytkownika jest wykorzystanie tych danych i korzystanie z nich zamiast ciasteczek czy identyfikatorów i loginów. Brzmi to trochę karkołomnie, ale w sieciach korporacyjnych, gdzie użytkownik się musi zalogować do swojego konta za każdym razem gdy korzysta z komputera, takie podejście może zdać egzamin.
Mój pomysł wygląda następująco:
$browser = $_SERVER['HTTP_USER_AGENT'].get_browser(null, true); //pobiera informacje na temat przeglądarki $ip = $_SERVER['REMOTE_ADDR']; //pobiera IP odwiedzającego $browser = serialize($browser.$ip); //zamienia dane w jeden ciąg $login = sha1($browser); //szyfrowanie danych i wykorzystanie ich jako loginu do systemu $pass = $ip; //wykorzystanie IP jako hasła do konta w serwisie korporacyjnym |
To administrator takiej sieci będzie ustalał dane przeglądarki i sieci komputerowej z jakiej dany użytkownik będzie mógł się zalogować.
Zdaję sobie sprawę, że moje podejście jest bardzo uproszczone w stosunku do tego co zaprezentował serwis Panopticlick i ogranicza się tylko i wyłącznie do języka PHP, ale można jest stosować w specyficznych rozwiązaniach intranetowych i korporacyjnych.
Jestem otwarty na wszelkie komentarze odnoszące się do tego pomysłu.
Jeżeli ktoś jest zainteresowany specyfikacją browser fingerprinting, to zapraszam do przeczytania jej TUTAJ (tekst jest po angielsku).