Muszę znaleźć sposób jednoznacznej identyfikacji każdego komputera, który odwiedza witrynę, którą tworzę. Czy ktoś ma jakieś porady, jak to osiągnąć?
Ponieważ chcę, aby rozwiązanie działało na wszystkich komputerach i we wszystkich przeglądarkach (z uzasadnionego powodu), próbuję utworzyć rozwiązanie za pomocą javascript.
Pliki cookie nie działają.
Potrzebuję zdolności do stworzenia przewodnika, który jest unikalny dla komputera i powtarzalny, zakładając, że na komputerze nie nastąpiły żadne zmiany sprzętowe. Kierunki, o których myślę, to uzyskanie MAC karty sieciowej i inne tego rodzaju informacje, które będą identyfikować maszynę odwiedzającą stronę internetową.
javascript
cookies
browser
to jest wartościowe
źródło
źródło
Odpowiedzi:
Osoby te opracowały metodę pobierania odcisków palców w celu rozpoznania użytkownika z wysoką dokładnością:
https://panopticlick.eff.org/static/browser-uniqueness.pdf
źródło
Wprowadzenie
Nie wiem, czy istnieje lub kiedykolwiek będzie sposób na jednoznaczną identyfikację maszyn za pomocą samej przeglądarki. Główne powody to:
Nawet jeśli istnieją sposoby na śledzenie komputera bez użycia plików cookie, zawsze będzie sposób na obejście go i oprogramowanie, które zrobi to automatycznie. Jeśli naprawdę potrzebujesz śledzić coś na podstawie komputera, musisz napisać natywną aplikację (Apple Store / Android Store / Windows Program / etc).
Być może nie będę w stanie udzielić odpowiedzi na zadane pytanie, ale mogę pokazać, jak wdrożyć śledzenie sesji. Dzięki śledzeniu sesji próbujesz śledzić sesję przeglądania zamiast odwiedzania witryny przez komputer. Dzięki śledzeniu sesji schemat bazy danych będzie wyglądał następująco:
Zalety śledzenia na podstawie sesji:
username
/password
/email
.sessionID
.Wady śledzenia na podstawie sesji:
Realizacja
Istnieje wiele sposobów realizacji tego. Nie sądzę, żebym mógł je wszystkie opisać. Po prostu wymienię moich ulubionych, co sprawi, że będzie to pozytywna odpowiedź . Pamiętaj o tym.
Podstawy
Będę śledzić sesję, używając tak zwanego wiecznego pliku cookie. Są to dane, które zostaną automatycznie odtworzone, nawet jeśli użytkownik usunie pliki cookie lub zaktualizuje przeglądarkę. Nie przetrwa jednak usunięcie zarówno plików cookie, jak i pamięci podręcznej przeglądania.
W tym celu wykorzystam mechanizm buforowania przeglądarki ( RFC ), API WebStorage ( MDN ) i pliki cookie przeglądarki ( RFC , Google Analytics ).
Prawny
Aby wykorzystać identyfikatory śledzenia, musisz dodać je zarówno do swojej polityki prywatności, jak i warunków korzystania, najlepiej w ramach poddziału Śledzenie . Będziemy używać następujących kluczy zarówno na, jak
document.cookie
i nawindow.localStorage
:Upewnij się, że na wszystkich stronach korzystających ze śledzenia dołączasz linki do swojej polityki prywatności i warunków użytkowania.
Gdzie mam przechowywać dane sesji?
Możesz zapisać dane sesji w bazie danych witryny lub na komputerze użytkownika. Ponieważ zwykle pracuję na mniejszych witrynach (pozwalających na ponad 10 tysięcy ciągłych połączeń), które używają aplikacji innych firm (Google Analytics / Clicky / itp.), Najlepiej jest dla mnie przechowywać dane na komputerze klienta. Ma to następujące zalety:
i wady:
UUIDS
Browser|BrowserVersion|OS|OSVersion|Processor|MozzilaMajorVersion|GeckoMajorVersion
getISP(requestIP)|getHTTPSClientKey()
FingerPrint.get()
BrowserID|ComputerID|randombytes(256)
__utma
pliku cookie.getCookie(__utma).uniqueid
Mechanizm
Pewnego dnia oglądałem pokaz mojej wendy Williams z moją dziewczyną i byłem całkowicie przerażony, gdy prowadząca poradziła swoim widzom, aby usunęli historię przeglądarki przynajmniej raz w miesiącu. Usunięcie historii przeglądarki ma zwykle następujące skutki:
window.localStorage
(aww man).Większość współczesnych przeglądarek udostępnia tę opcję, ale nie bój się przyjaciół. Bo jest rozwiązanie. Przeglądarka ma mechanizm buforowania do przechowywania skryptów / obrazów i innych rzeczy. Zwykle nawet jeśli usuniemy naszą historię, ta pamięć podręczna przeglądarki nadal pozostaje. Wszystko, czego potrzebujemy, to sposób przechowywania naszych danych tutaj. Można to zrobić na 2 sposoby. Lepszym rozwiązaniem jest użycie obrazu SVG i przechowywanie naszych danych w jego tagach. W ten sposób dane można nadal wyodrębniać, nawet jeśli JavaScript jest wyłączony za pomocą flasha. Ponieważ jednak jest to trochę skomplikowane, pokażę inne podejście, które wykorzystuje JSONP ( Wikipedia )
przyklad.com/assets/js/tracking.js (aktualnie tracking.php)
Teraz możemy uzyskać klucz sesji w dowolnym momencie:
window.__sid || window.localStorage.getItem("sid") || getCookie("sid") || ""
Jak sprawić, by tracking.js został w przeglądarce?
Możemy to osiągnąć za pomocą nagłówków HTTP Cache-Control , Last-Modified i ETag . Możemy użyć
SessionID
wartości as dla nagłówka etag:Last-Modified
Nagłówek informuje przeglądarkę, że ten plik zasadniczo nigdy nie jest modyfikowany.Cache-Control
informuje serwery proxy i bramy, aby nie buforowały dokumentu, ale przeglądarkę buforuje go przez 1 rok.Następnym razem, gdy przeglądarka zażąda dokumentu, wyśle
If-Modified-Since
iIf-None-Match
nagłówki. Możemy użyć ich do zwrócenia304 Not Modified
odpowiedzi.przyklad.com/assets/js/tracking.php
Teraz za każdym razem, gdy przeglądarka zażąda,
tracking.js
nasz serwer odpowie304 Not Modified
wynikiem i wymusi wykonanie lokalnej kopiitracking.js
.Nadal nie rozumiem. Wyjaśnij mi to
Załóżmy, że użytkownik czyści historię przeglądania i odświeża stronę. Na komputerze użytkownika pozostaje tylko kopia
tracking.js
pamięci podręcznej przeglądarki. Gdy przeglądarka zażądatracking.js
, otrzymuje304 Not Modified
odpowiedź, która powoduje wykonanie pierwszejtracking.js
otrzymanej wersji .tracking.js
wykonuje i przywracaSessionID
usunięte dane.Uprawomocnienie
Załóżmy, że Haxor X kradnie ciasteczka naszych klientów, gdy są jeszcze zalogowani. Jak je chronić? Kryptografia i odciski palców przeglądarki na ratunek. Pamiętaj, że nasza pierwotna definicja
SessionID
brzmiała:Możemy to zmienić na:
Gdzie
hk = sign(Timestamp|BrowserID|ComputerID, serverKey)
.Teraz możemy zweryfikować nasz
SessionID
przy użyciu następującego algorytmu:Teraz, aby atak Haxora zadziałał, muszą:
ComputerID
. Oznacza to, że muszą mieć tego samego dostawcę usług internetowych co ofiara (Tricky). To da naszej ofierze możliwość podjęcia kroków prawnych we własnym kraju. Haxor musi także uzyskać klucz sesji HTTPS od ofiary (trudny).BrowserID
. Każdy może sfałszować ciąg User-Agent (irytujące).SessionID
(Very Hard). Ataki woluminów nie będą działać, ponieważ używamy znacznika czasu do generowania klucza szyfrowania / podpisywania, więc zasadniczo przypomina to generowanie nowego klucza dla każdej sesji. Ponadto szyfrujemy losowe bajty, więc prosty atak słownikowy również nie wchodzi w rachubę.Możemy poprawić sprawdzanie poprawności poprzez przekazywanie
GoogleID
iFingerprintID
(poprzez ajax lub ukryte pola) i dopasowanie do nich.źródło
storageFacade.setItem
i storageFacade.getItem. And it tries to use localStorage, but fallsback to your technique when disabled. ..Perhaps the way it works is via a single file for "diffs" i.e. each time you call
setItem. And then a
manifest` wszystkich różnic utworzonych podczas sesji, która jest tworzona automatycznie co jakiś czas.Nie można zidentyfikować komputerów uzyskujących dostęp do strony internetowej bez współpracy ich właścicieli. Jeśli jednak na to pozwalają, możesz zapisać plik cookie w celu identyfikacji komputera, gdy ponownie odwiedzi Twoją witrynę. Kluczem jest to, że gość ma kontrolę; mogą usunąć plik cookie i pojawić się jako nowy użytkownik w dowolnym momencie.
źródło
Możliwe jest użycie plików cookie flash :
Musisz zbudować mały (ukryty) film flash, aby go przeczytać i napisać.
Niezależnie od wybranej trasy upewnij się, że użytkownicy wybierają opcję śledzenia, w przeciwnym razie naruszasz ich prywatność i stajesz się jednym ze złych.
źródło
Adobe announced that Flash Player 10.3 enables Mozilla Firefox 4 and "future releases of Apple Safari and Google Chrome" to delete local shared objects,[11] so since version 4, Firefox treats LSOs the same way as HTTP cookies - deletion rules that previously applied only to HTTP cookies now also apply to LSOs.
Możesz spróbować ustawić unikalny identyfikator w evercookie (będzie działać w różnych przeglądarkach, zobacz ich FAQ): http://samy.pl/evercookie/
Istnieje również firma o nazwie ThreatMetrix, która jest używana przez wiele dużych firm do rozwiązania tego problemu: http://threatmetrix.com/our-solutions/solutions-by-product/trustdefender-id/ Są one dość drogie, a niektóre ich inne produkty nie są zbyt dobre, ale identyfikator urządzenia działa dobrze.
Wreszcie, istnieje implementacja panopticlick typu open source typu jquery: https://github.com/carlo/jquery-browser-fingerprint Wygląda teraz na wpół upieczony, ale można go rozwinąć.
Mam nadzieję, że to pomoże!
źródło
Click to rediscover cookies
i zobaczył albo zerowy, albo niezdefiniowany. Więc to nie działa dla mnieIstnieje popularna metoda zwana odciskaniem palców na płótnie, opisana w tym artykule naukowym: Sieć nigdy nie zapomina: trwałe mechanizmy śledzenia na wolności . Gdy zaczniesz go szukać, zdziwisz się, jak często jest używany. Metoda tworzy unikalny odcisk palca, który jest spójny dla każdej kombinacji przeglądarki / sprzętu.
W artykule omówiono także inne trwałe metody śledzenia, takie jak evercookie, odradzanie plików cookie HTTP i Flash oraz synchronizowanie plików cookie.
Więcej informacji na temat odcisku palca na płótnie tutaj:
źródło
Istnieje tylko niewielka ilość informacji, które można uzyskać za pośrednictwem połączenia HTTP.
IP - ale jak powiedzieli inni, nie jest to ustalone dla wielu, jeśli nie dla większości użytkowników Internetu, ze względu na zasady dynamicznej alokacji ich usługodawcy internetowego.
Ciąg Useragent - prawie wszystkie przeglądarki wysyłają rodzaj przeglądarki przy każdym żądaniu. Może to jednak ustawić dzisiaj użytkownik w wielu przeglądarkach.
Zbieranie pól żądań - do każdego żądania wysyłane są inne pola, takie jak obsługiwane kodowanie itp. Te, jeśli zostaną użyte w agregacji, mogą pomóc w identyfikacji komputera użytkownika, ale znowu zależą od przeglądarki i można je zmienić.
Pliki cookie - ustawienie pliku cookie to kolejny sposób identyfikacji komputera, a dokładniej przeglądarki na komputerze, ale jak powiedzieli inni, mogą one zostać usunięte lub wyłączone przez użytkowników i mają zastosowanie tylko w przeglądarce, a nie maszyna.
Tak więc poprawną odpowiedzią jest to, że nie można osiągnąć tego, co żyłbyś za pomocą samych protokołów HTTP over IP. Jednak stosując kombinację plików cookie oraz adresu IP i pól w żądaniu HTTP, masz dużą szansę na odgadnięcie, jakie to urządzenie. Użytkownicy zwykle używają tylko jednej przeglądarki i często z jednego komputera, więc może to być dość niezawodne, ale będzie się to różnić w zależności od odbiorców ... technicy są bardziej skłonni do bałagania się z tym i używają większej liczby maszyn / przeglądarek. Ponadto można to nawet połączyć z próbą geolokalizacji adresu IP i wykorzystania tych danych. Ale w każdym razie nie ma rozwiązania, które byłoby poprawne przez cały czas.
źródło
Istnieją wady zarówno w podejściu do plików cookie, jak i bez plików cookie. Ale jeśli możesz wybaczyć niedociągnięcia w podejściu do plików cookie, oto pomysł.
Jeśli korzystasz już z Google Analytics w swojej witrynie, nie musisz pisać kodu, aby samodzielnie śledzić unikalnych użytkowników. Google Analytics robi to za Ciebie za pomocą
__utma
wartości pliku cookie, zgodnie z opisem w dokumentacji Google . Ponownie wykorzystując tę wartość, nie tworzysz dodatkowej zawartości plików cookie, co zapewnia korzyści w zakresie wydajności przy żądaniach stron.I możesz napisać kod wystarczająco łatwo, aby uzyskać dostęp do tej wartości lub użyć funkcji tego skryptu
getUniqueId()
.źródło
getUniqueId()
w różnych przeglądarkach na tym samym komputerze?Podobnie jak w przypadku poprzednich rozwiązań, pliki cookie są dobrą metodą, należy jednak pamiętać, że identyfikują one przeglądarki . Gdybym odwiedził witrynę w przeglądarce Firefox, a następnie w przeglądarce Internet Explorer, pliki cookie byłyby przechowywane dla obu prób oddzielnie. Niektórzy użytkownicy wyłączają także pliki cookie (ale więcej osób wyłącza JavaScript).
Inną metodą, którą należy wziąć pod uwagę, jest identyfikacja adresu IP i nazwy hosta (należy pamiętać, że mogą się one różnić w przypadku telefonicznych / niestatycznych użytkowników IP, AOL używa również pustych adresów IP). Ponieważ jednak identyfikuje to tylko sieci, może nie działać tak dobrze, jak pliki cookie.
źródło
Pomijając użycie plików cookie, jedyny kompleksowy zestaw identyfikujących atrybutów dostępnych do zapytania znajduje się w nagłówku żądania HTTP. Możliwe jest więc użycie ich niektórych podzbiorów w celu utworzenia pseudo-unikalnego identyfikatora dla agenta użytkownika (tj. Przeglądarki). Co więcej, większość tych informacji prawdopodobnie jest już domyślnie zapisywana w tak zwanym „dzienniku dostępu” oprogramowania serwera WWW, a jeśli nie, można ją łatwo skonfigurować. Następnie można opracować narzędzie, które po prostu skanuje zawartość tego dziennika, tworząc odciski palcówkażdego żądania składającego się, powiedzmy, z adresu IP i ciągu Agenta użytkownika itp. Im więcej dostępnych danych, w tym zawartość określonych plików cookie, podnosi jakość wyjątkowości tego odcisku palca. Chociaż, jak już wielu innych stwierdziło, protokół HTTP nie czyni tego w 100% niezawodnym - w najlepszym razie może to być tylko dość dobry wskaźnik.
źródło
Jest to dość powszechny typ uwierzytelniania wykorzystywany przez banki.
Załóżmy, że uzyskujesz dostęp do witryny banku za pośrednictwem example-isp.com. Gdy pierwszy raz tam będziesz, zostaniesz poproszony o podanie hasła, a także o dodatkowe uwierzytelnienie. Po przejściu bank wie, że użytkownik „thatisvaliant” jest uwierzytelniony w celu uzyskania dostępu do witryny za pośrednictwem example-isp.com.
W przyszłości nie będzie wymagać dodatkowego uwierzytelnienia (poza hasłem) podczas uzyskiwania dostępu do witryny za pośrednictwem example-isp.com. Jeśli spróbujesz uzyskać dostęp do banku za pośrednictwem another-isp.com, bank ponownie przejdzie tę samą procedurę.
Podsumowując, tym, co identyfikuje bank, jest twój dostawca usług internetowych i / lub blokada sieci na podstawie twojego adresu IP. Oczywiście nie każdy użytkownik Twojego dostawcy usług internetowych to Ty, dlatego bank wciąż prosi o podanie hasła.
Czy kiedykolwiek zdarzyło Ci się zadzwonić do firmy wydającej kartę kredytową, aby sprawdzić, czy wszystko jest w porządku, gdy używasz karty kredytowej w innym kraju? Ta sama koncepcja.
źródło
Naprawdę nie można tego zrobić, ponieważ protokoły na to nie pozwalają. Jeśli statyczne adresy IP były powszechnie używane, być może będziesz w stanie to zrobić. Nie są, więc nie możesz.
Jeśli naprawdę chcesz zidentyfikować osoby , zaloguj się.
Ponieważ prawdopodobnie będą się przenosić na różne strony w Twojej witrynie, potrzebujesz sposobu, aby śledzić je podczas ruchu.
Tak długo, jak są zalogowani, a Ty śledzisz ich sesję w witrynie za pomocą plików cookie / parametrów łącza / sygnałów nawigacyjnych / czegokolwiek, możesz być całkiem pewien, że w tym czasie korzystają z tego samego komputera.
Ostatecznie błędne jest stwierdzenie, z jakiego komputera korzystają, jeśli użytkownicy nie korzystają z własnej sieci lokalnej i nie mają statycznych adresów IP.
Jeśli to, co chcesz zrobić, odbywa się we współpracy z użytkownikami, a na jeden plik cookie przypada tylko jeden użytkownik i używają one jednej przeglądarki internetowej, wystarczy użyć pliku cookie.
źródło
Pliki cookie nie będą przydatne do określania unikalnych użytkowników. Użytkownik może wyczyścić pliki cookie i odświeżyć witrynę - następnie zostaje sklasyfikowany jako nowy użytkownik.
Myślę, że najlepszym sposobem na zrobienie tego jest wdrożenie rozwiązania po stronie serwera (ponieważ będziesz potrzebować miejsca do przechowywania danych). W zależności od złożoności potrzeb związanych z takimi danymi, musisz określić, co jest klasyfikowane jako wyjątkowa wizyta. Rozsądną metodą byłoby zezwolenie, aby adres IP powrócił następnego dnia i miał niepowtarzalną wizytę. Kilka wizyt z jednego adresu IP w ciągu jednego dnia nie powinno być liczonych jako niepowtarzalne.
Na przykład przy użyciu PHP uzyskanie adresu IP użytkownika i przechowywanie go w pliku tekstowym (lub bazie danych SQL) jest banalne.
Rozwiązanie po stronie serwera będzie działać na wszystkich komputerach, ponieważ będziesz śledzić użytkownika, gdy po raz pierwszy załaduje Twoją witrynę. Nie używaj javascript, ponieważ jest on przeznaczony do skryptów po stronie klienta, a użytkownik może go w każdym razie wyłączyć.
Mam nadzieję, że to pomaga.
źródło
Czy to nie jest naprawdę dobry powód, aby nie używać javascript?
Jak powiedzieli inni - pliki cookie są prawdopodobnie najlepszą opcją - po prostu pamiętaj o ograniczeniach.
źródło
Możesz użyć odcisku palcajs2
Następnie możesz sprawdzić wszystkich użytkowników pod kątem istniejących i sprawdzić podobieństwo JSON, więc nawet jeśli ich odcisk palca ulegnie mutacji, nadal możesz je śledzić
źródło
Wydaje mi się, że werdykt jest taki, że nie mogę programowo jednoznacznie zidentyfikować komputera, który odwiedza moją witrynę.
Mam następujące pytanie. Kiedy korzystam z urządzenia, które nigdy nie odwiedzało mojej witryny bankowości internetowej, pojawia się monit o dodatkowe uwierzytelnienie. następnie, jeśli wrócę po raz drugi do witryny bankowości internetowej, nie otrzymam dodatkowego potwierdzenia. czytając odpowiedzi na moje pytanie, zdecydowałem, że musi to być plik cookie. w związku z tym usunąłem wszystkie pliki cookie w przeglądarce IE i ponownie zalogowałem się na mojej stronie bankowości internetowej, w pełni oczekując ponownego pytania o uwierzytelnienie. ku mojemu zaskoczeniu nie zostałem zapytany. czy to nie prowadzi do przekonania, że bank robi jakieś tagowanie PC, które nie obejmuje plików cookie?
ponadto, po wielu poszukiwaniach w Google, znalazłem następującą firmę, która twierdzi, że sprzedaje rozwiązanie, które jednoznacznie identyfikuje maszyny odwiedzające stronę internetową. http://www.the41.com/products.asp .
Doceniam wszystkie dobre informacje, jeśli mógłbyś dokładniej wyjaśnić te sprzeczne informacje, które znalazłem, byłbym bardzo wdzięczny.
źródło
Zrobiłbym to za pomocą kombinacji plików cookie i plików cookie flash. Utwórz identyfikator GUID i zapisz go w pliku cookie. Jeśli plik cookie nie istnieje, spróbuj odczytać go z pliku cookie flash. Jeśli nadal nie można go znaleźć, utwórz go i zapisz w pliku cookie flash. W ten sposób możesz udostępniać ten sam identyfikator GUID w różnych przeglądarkach.
źródło
Myślę, że ciasteczka mogą być tym, czego szukasz; w ten sposób większość witryn jednoznacznie identyfikuje odwiedzających.
źródło
Zakładając, że nie chcesz, aby użytkownik miał kontrolę, nie możesz. Sieć nie działa w ten sposób, na co możesz mieć nadzieję, to heurystyka.
Jeśli istnieje możliwość zmuszenia użytkownika do zainstalowania oprogramowania i korzystania z protokołu TCPA, być może uda się coś wyciągnąć.
źródło
Mój post może nie być rozwiązaniem, ale mogę podać przykład, w którym ta funkcja została zaimplementowana.
Jeśli
www.supertorrents.org
po raz pierwszy odwiedzisz stronę rejestracji z komputera, wszystko będzie w porządku. Ale jeśli odświeżysz stronę lub ponownie ją otworzysz, oznacza to, że wcześniej ją odwiedziłeś. Prawdziwe piękno pojawia się tutaj - identyfikuje, nawet jeśli ponownie zainstalujesz system Windows lub inny system operacyjny.Czytałem gdzieś, że przechowują identyfikator procesora. Chociaż nie mogłem znaleźć sposobu, w jaki sposób to robią, poważnie w to wątpię i mogą do tego użyć adresu MAC.
Na pewno się podzielę, jeśli znajdę jak to zrobić.
źródło
Sztuczka:
Utwórz 2 strony rejestracyjne:
Pierwsza strona rejestracji: bez adresu e-mail lub kontroli bezpieczeństwa (tylko z nazwą użytkownika i hasłem)
Druga strona rejestracyjna: z wysokim poziomem bezpieczeństwa (prośba o weryfikację adresu e-mail i obraz bezpieczeństwa itp.)
Dla zadowolenia klienta i łatwej rejestracji domyślną stroną rejestracji powinna być (Pierwsza strona rejestracji), ale na (Pierwszej stronie rejestracji) ukryte jest ograniczenie. To ograniczenie własności intelektualnej. Jeśli adres IP próbował zarejestrować się po raz drugi (na przykład krócej niż 1 godzina) zamiast wyświetlać stronę blokowania. możesz automatycznie wyświetlić (Druga strona rejestracji) .
Uwaga: (Pierwsza strona rejestracji) i (Druga strona rejestracji) nie powinny znajdować się na osobnych stronach. tworzysz tylko 1 stronę. (na przykład: register.php) i spraw, aby inteligentnie przełączać się między stylem pierwszego PHP a drugim stylem PHP
źródło