[PHP] Browser fingerprints, czyli jak przeglądarka zostawia ślad po sobie i jak to wykorzystać?
This post is 16 years old. Browsers and tools may have changed since then, so check the code against current documentation before you use it.
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).