Jak rozpoznać konkretny komputer?

0

Hej, nie wiedziałem za bardzo, w którym dziale to umieścić, więc wleciało tutaj. Bo to dość ogólne chyba pytanie (chyba, że webmastering będzie lepszy).

Problem:
Chcę umieć rozpoznać komputer użytkownika aplikacji webowej. Tzn. użytkownik loguje się pierwszy raz - jego maszyna jest automatycznie rejestrowana. Użytkownik loguje się kolejny raz, aplikacja sprawdza, czy loguje się z tej samej maszyny. Coś takiego jak w bankach teraz się spotyka. Jeśli zalogujesz się do mBanku z innego urządzenia, dostaniesz alert.

Zadałem to pytanie na stacku, ale nie dostałem żadnej konkretnej odpowiedzi: https://stackoverflow.com/questions/59705853/netcore-razor-device-registration-in-www

Więc wymyśliłem sobie coś takiego (na podstawie materiałów, które czytałem):
Biorę różne cechy z komputera klienta:

  • nazwa systemu operacyjnego
  • nazwa przeglądarki
  • HTTP-ACCEPT
  • rozdzielczość ekranu
  • strefa czasowa

Każda z tych cech ma przyporządkowane prawdopodobieństwo zmiany (zgodnie z tym: https://wiki.mozilla.org/Fingerprinting). Jeśli wyjdzie mi z porównania, że maszyna, z której aktualnie się użytkownik loguje jest różna o większy próg niż założony, to wtedy jest to inna maszyna. I to pewnie w miarę będzie działać. Problem pojawi się w momencie, gdy użytkownik loguje się na drugiej maszynie, która ma taką samą konfigurację albo tylko leciutko zmienioną.

Wtedy z porównania mi wyjdzie, że to ta sama maszyna, co ostatnio.
Więc pojawia się potrzeba jakiegoś dodatkowego rozróżnienia. Jedyne, co mi przyszło do głowy to np. ciasteczko dodatkowe z ID maszyny zapisanej w bazie danych (guid). Ale co w momencie, gdy użytkownik usunie ciasteczka? Będzie problem. A w moim założeniu, user może używać aplikacji tylko z jednego kompa (ograniczenie "marketingowe").

Nie chcę używać ever cookies, bo to jest źle widziane i zaraz nie będzie dostępne. Jak byście podeszli do takiego problemu?

0

OK, to pojawia się kolejne pytanie. Co robić, gdy ktoś wyczyści cache przeglądarki? Mógłbym trzymać w dwóch miejscach - cookie i localStorage. Ale to się chyba często usuwa razem (ciastka i cache). Czy normalnie traktować to wtedy jako nowe urządzenie?

2

Nie ma innego sposobu, żeby jednoznacznie zidentyfikować system/przeglądarkę klienta.

Jak wrzucisz ciastko czy coś do storage, to masz pewność (prawie na 100%, ale przyjmijmy, że pewność), że to ten komputer. Jak ktoś wyczyści dane przeglądarki, to (jeśli bezpieczeństwo jest dla Ciebie istotne), musisz traktować takiego pacjenta, jakby był kimś obcym i go autoryzować/uwierzytelniać od zera - czyli wymagać haseł, logowania, potwierdzeń itp.

0

To co robią banki, czyli sprawdzanie figerprint, to jest mechanizm zabezpieczający przed ukradnięciem sesji która zwykle jest trzymana w klasyczny sposób za pomocą ciasteczka albo localstorage.

0

Nie no bez jaj z tym local storage do identyfikowania kogoś. Zaraz sobie wrzuce tam admin i co wtedy? :D Poczytaj o fingerprintowaniu urządzenia.

0

Zaraz sobie wrzucę tam admin i co wtedy

No traktując to w ten sposób to masz rację. Ale równie dobrze może być tam trzymana jakaś wartość zaszyfrowana, jakiś hash czy coś innego, co zostanie przesłane do serwera i w połączeniu z ciasteczkiem pozwoli stwierdzić, czy dany pacjent jest autoryzowany

Poczytaj o fingerprintowaniu urządzenia

Dobrze wiesz, że nie zawsze to działa (chociażby zmiana IP potrafi to rozwalić). I żeby nie było, że wymyślam - doskonale wiesz, ile z tym mamy problemów na 4P i jakie bzdury nieraz to potrafi pokazywać :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1