search check home clock-o tag tags chevron-left chevron-right chevron-up chevron-down twitter facebook github rss comment comments terminal code

[PHP] Browser fingerprints, czyli jak przeglądarka zostawia ślad po sobie i jak to wykorzystać?

[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

Takie dane możemy przechowywać w bazie danych i następnie wywoływać je po wejściu na stronę. Dzięki temu, treść danego serwisu będzie zabezpieczona przed niepowołanym wejściem z innej sieci komputerowej czy nawet z innej przeglądarki internetowej.
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).

  • Rozwiązanie ciekawe, ale co w wypadku zmiany przeglądarki, co w wypadku gdy dostajemy dynamiczne IP, co jeśli jesteśmy za NATem? Pomysł może przydać się więc w bardzo konkretnych zastosowaniach np. w sieci lokalnej firmy, szkoły czy urzędu…

  • Adam

    Ciekawy pomysł, nie spotkałem się z czymś takim jeszcze ale ma to sporą wadę, jedna zmiana w systemie i mamy po dostępie, w przypadku większej sieci byłoby to problematyczne.
    Co innego zabezpieczenie w ten sposób konta administratora, to ma sens jak dla mnie.

  • Tomek

    Może zamiana standardowego systemu autoryzacji na podany przez Ciebie jest rozwiązaniem mało elastycznym, jednak już użycie takiego mechanizmu do zapamiętywania użytkownika może zdać egzamin. Wtedy każda zmiana parametrów identyfikujących użytkownika wymusi na użytkowniku podanie standardowych danych logowania, oraz po poprawnej weryfikacji standardową autoryzacją zaktualizuje dane autologowania.

    Tomasz K.

  • Do autoryzacji raczej się nie nadaje, ale do personalizacji i owszem…

  • MajareQ

    To jest to coś czego szukałem pracując w Urzędzie Skarbowym 😉