chevron-left chevron-right

Piotr Nalepa Frontend, architecture and AI

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

This version
blog.piotrnalepa.pl/2010/10/07/php-browser-fingerprints-czyli-jak-przegladarka-zostawia-slad-po-sobie-i-jak-to-wykorzystac
Published
Author
, Staff Software Engineer
Category
PHP
Feedback
Write to me · Post on X

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:

Example 1PHP
$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).

Share
Feedback

About the author

Staff Software Engineer

I've been writing this blog since 2009 and building for the web professionally for 14 years. Today I lead the frontend of the Cosmos platform at Bishop Fox, where I've been since day one of the project. Before that I worked at OLX, KUDO, Auto1 and eZ Systems. Here I write about what I've learned in practice: JavaScript, TypeScript, React, CSS and frontend architecture. I've also spoken at conferences across Poland and Europe. Got a question or an idea for a post? Let me know!