Odcisk cyfrowy oznacza próbę identyfikacji użytkownika, gdy wraca on do witryny, lub identyfikowanie tego samego użytkownika w różnych witrynach. Twoja konfiguracja może różnić się od konfiguracji u innego użytkownika. Możesz na przykład używać innego typu urządzenia i innej przeglądarki, mieć inny rozmiar ekranu i inne zainstalowane czcionki. Jeśli mam zainstalowany font „Dejavu Sans”, a Ty nie, każda witryna może sprawdzić, czy różnimy się od siebie, sprawdzając ten font. W ten sposób działa tworzenie profilu użytkownika: gromadzisz zbiór tych punktów danych, a każdy z nich zapewnia więcej sposobów na rozróżnienie użytkowników.
Bardziej formalna definicja może wyglądać tak: pobieranie odcisków cyfrowych polega na stosowaniu oczywistych i nieoczywistych danych długoterminowych konfiguracji użytkownika, aby spróbować odróżnić go od jak największej liczby innych użytkowników.
Dlaczego pobieranie odcisków cyfrowych szkodzi prywatności użytkowników
W niektórych szczególnych przypadkach odcisk palca użytkownika jest ważny, np. w celu wykrywania oszustw. Odciski palców mogą jednak używane do śledzenia użytkowników w różnych witrynach i często odbywa się bez zgody użytkownika, a w niektórych przypadkach na podstawie zgody użytkownika. o nieprawidłowej zgody, która nie zawiera odpowiednich informacji na temat użytkownika. Wtedy użytkownicy często oswoją się z tym, raczej zdradzona.
Odcisk palca to sposób na porównanie użytkowników. Funkcja odcisku cyfrowego może pomóc w rozpoznaniu, to nadal ten sam użytkownik w tej samej witrynie lub rozpoznanie tego samego użytkownika w dwóch różnych profilach przeglądarki naraz. Oznacza to, że odciski palców mogą być używane do śledzenia użytkowników w różnych witrynach. Deterministyczne i jawne metody śledzenia, np. przechowywania pliku cookie z unikalnym identyfikatorem dla użytkownika, mogą być do pewnego stopnia obserwowane przez użytkowników i kontrolowane (w poprzednim module omówiliśmy niektóre z nich). Jednak trudniej jest uniknąć ponieważ jest ukryta. polega na niezmieniających się cechach i najprawdopodobniej odbywa się niewidocznie. Dlatego nazywa się to „odcisk palca”. Zmiana odcisku palca jest najbardziej trudna – zarówno w przypadku cyfrowego, jak i odcisku palca palców.
Dostawcy przeglądarek wiedzą, że użytkownicy nie lubią być śledzeni, i stale wprowadzają funkcje ograniczające tworzenie odcisków palców (niektóre z nich omówiliśmy w poprzednim module). W tym artykule omawiamy, jak te funkcje mogą wpływać na wymagania biznesowe i jak nadal realizować swoje cele w sposób zapewniający ochronę prywatności. Chodzi o to, jak ochrona przeglądarki przeciwko będzie miało wpływ na to, co i jak robisz, a nie na to, jak powstrzyma ono odciski palców.
W praktyce większość deweloperów i większość firm nie musi rejestrować odcisków cyfrowych użytkowników. Jeśli Twoja aplikacja wymaga logowania, użytkownicy identyfikują się przed Tobą, wyrażając na to zgodę, w sposób, który umożliwia im rezygnację w dowolnym momencie. Jest to metoda oparta na ochronie prywatności, która pozwala sprawdzić, którzy użytkownicy są zalogowani. Aplikacja może wcale nie wymagać logowania się, co jeszcze lepiej chroni prywatność użytkowników (a Ty zbierasz tylko dane, których potrzebujesz).
Tak
Sprawdź, czy firmy zewnętrzne nie stosują odcisków palców. W ramach modułu usług zewnętrznych możesz mieć już listę usług zewnętrznych, które uwzględniasz, oraz żądań internetowych, które one wysyłają. Możesz sprawdzić te żądania, aby zobaczyć, które dane (jeśli w ogóle) są przekazywane z powrotem do nadawcy. Często jest to jednak trudne, ponieważ pobieranie odcisków palców jest z natury tajnym procesem, który wymaga wysyłania żądań o dane, na które użytkownik nie wyraził zgody.
Warto też zapoznać się z politykami prywatności usług i zależnych komponentów innych firm, aby sprawdzić, czy nie są one używane do tworzenia odcisków palców. Czasami określa się to jako „dopasowanie probabilistyczne” lub jako część zestawu technik dopasowania probabilistycznego, w przeciwieństwie do „dopasowania deterministycznego”.
Jak działa odcisk palca
Często Twoja osobista kombinacja tych atrybutów jest unikalna dla Ciebie lub przynajmniej dla niewielkiej grupy podobnych osób. Można jej użyć do tajnego śledzenia.
Poza tym: pasywne i aktywne odciski cyfrowe
W tym przypadku warto odróżnić techniki pasywnego i aktywnego pobierania odcisków palców. Technika pasywnego pobierania odcisków palców polega na wykorzystywaniu informacji, które są domyślnie przekazywane do witryny. Technika aktywnego pobierania odcisków palców polega na wyraźnym zapytaniu przeglądarki o dodatkowe informacje. Rozróżnienie to jest tak ważne, że przeglądarki mogą próbować wykryć i przechwycić aktywne techniki lub zminimalizować ich skutki. Interfejsy API mogą podlegać ograniczeniom lub być blokowane za pomocą okna dialogowego prosić użytkownika o zgodę (a tym samym powiadamiać użytkownika o tym, że są wykorzystywane, lub umożliwiać mu odmowę ). Technika pasywna to metoda, która wykorzystuje dane, które zostały już udostępnione witrynie, często dlatego, że w przeszłości w czasach dojrzałości informatycznej Superhighway, że tę informację przekazywano wszystkim witrynom. Ciąg znaków klienta użytkownika to tego przykładu – przyjrzymy się temu dokładniej. Uznano ją za przydatny w dostarczaniu znacznej ilości informacje o przeglądarce, wersji i systemie operacyjnym użytkownika, tak by strona mogła prezentować inne na tej podstawie. Zwiększa to jednak ilość udostępnianych informacji wyróżniających, co pomaga odróżnić jednego użytkownika od drugiego; przez co takie informacje są coraz niedostępne lub przynajmniej w taki sposób, aby nie odróżniał się od innych. Jeśli Twoja działalność bazuje na tych informacjach – na przykład jeśli stosujesz różne w zależności od klienta użytkownika, kod ten może ulec uszkodzeniu, gdy przeglądarki coraz częściej zawieszają lub zatrzymują dostarczanie informacji. Najlepszym sposobem na ochronę przed takimi problemami jest testowanie (patrz dalej).
Uwaga: pomiar możliwości pozostawienia odcisku palca
Miara techniczna ilości informacji dostarczanych przez każdy z tych punktów danych jest nazywana entropią i mierzona w bitach. Funkcja, która ma wiele różnych możliwych wartości (np. lista zainstalowanych czcionek), może przyczynić się do zwiększenia całkowitej liczby bitów, podczas gdy coś, co nie ma dużej mocy rozróżniającej (np. system operacyjny, którego używasz), może dodać tylko kilka bitów. W HTTP Almanac opisano, jak istniejące biblioteki do tworzenia odcisków palców automatyzują proces łączenia odpowiedzi z wielu różnych interfejsów API w „hash”, który może identyfikować tylko małą grupę użytkowników, a czasem nawet tylko jednego. Maud Nalpas omawia to szczegółowo w tym filmie w YouTube, ale krótko mówiąc, wyobraź sobie, że widzisz listę swoich znajomych z ich ulubioną muzyką, ulubionymi potrawami i językami, którymi się posługują... ale bez ich imion. Istnieje duże prawdopodobieństwo, że każda osoba na liście znajomych będzie jednoznacznie identyfikowała ją wśród Twoich znajomych lub zmniejszyć listę do kilku osób. Oto jak działa pobieranie linii papilarnych; lista Twoich ulubionych rzeczy staje się haszem. Z i identyfikowanie użytkownika jako tej samej osoby w 2 różnych niepołączonych witrynach staje się łatwiejsze. śledzenia: w celu obejścia dążenia użytkownika do zachowania prywatności.
Jakie funkcje przeglądarek zapobiegają fingerprintingowi?
Co ważne, dostawcy przeglądarek bardzo wiedzą o tym, że istnieje wiele różnych sposobów obsługi witryny (lub firm zewnętrznych uwzględnionych w witrynie). do obliczania odcisku palca odróżniającego użytkownika lub dla różnych informacji, które przyczyniają się do zwiększenia unikatowości tego odcisku palca. Niektóre z tych sposobów są wyraźne i celowe, np. ciąg znaków klienta użytkownika przeglądarki, który często identyfikuje przeglądarkę, system operacyjny i wersję (co pozwala odróżnić Cię od mnie, jeśli używamy różnych przeglądarek). Niektóre sposoby nie są celowo tworzone w celu tworzenia odcisków palców, ale tak się dzieje, np. w przypadku listy czcionek lub urządzeń do odtwarzania obrazu i dźwięku dostępnych w przeglądarce. (Przeglądarka nie musi używać dla tych urządzeń, poszukaj ich nazw). Niektóre z nich zostały zidentyfikowane jako przyczyny tworzenia odcisków palców po wydaniu, np. dokładne renderowanie pikseli wygładzającego zacierania krawędzi czcionek na elemencie kanwy. Jest ich znacznie więcej, a każda cecha, która różni Twoją przeglądarkę od mojej, zwiększa entropię i potencjalnie przyczynia się do tego, że można odróżnić Cię ode mnie i identyfikować poszczególne osoby w jak najbardziej unikalny sposób w różnych witrynach. Na stronie https://amiunique.org znajdziesz długą (ale zdecydowanie niepełną) listę funkcji, które mogą przyczyniać się do tworzenia odcisków palców. Lista ta stale się wydłuża (ponieważ istnieje duży potencjał zarobkowy w możliwości tworzenia odcisków palców użytkowników, nawet jeśli użytkownicy nie chcą lub nie oczekują tego).
Brak obsługi niektórych zaawansowanych interfejsów API
Producenci przeglądarek reagują na wszystkie te metody obliczania odcisku palca użytkownika, starając się znaleźć sposoby na zmniejszenie ilości entropii dostępnej w tych interfejsach API. Najbardziej restrykcyjną opcją jest niewdrażanie tych zasad w ogóle. Niektóre popularne przeglądarki wprowadziły takie rozwiązania w przypadku różnych interfejsów API sprzętu i urządzeń (np. NFC i dostępu do Bluetooth z aplikacji internetowych po stronie klienta). Jako przyczyny niewdrażania tych rozwiązań podawano bezpieczeństwo i prywatność. Może to oczywiście mieć wpływ na Twoje aplikacje i usługi: w przeglądarce, która nie obsługuje danego interfejsu API, nie możesz go w ogóle używać. Może to ograniczyć lub całkowicie wykluczyć niektóre metody sprzętowe.
Brama uprawnień użytkownika
Drugie podejście stosowane przez dostawców przeglądarek polega na blokowaniu dostępu do interfejsu API lub danych bez wyraźnej zgody użytkownika. Takie podejście jest też często stosowane ze względów bezpieczeństwa – strona internetowa nie powinna mieć możliwości robienia zdjęć kamerą internetową. bez Twojej zgody! Jednak w tym przypadku prywatność i bezpieczeństwo mają podobne interesy. Określanie lokalizacji użytkownika naruszenie prywatności, ale też przyczynia się do niepowtarzalności odcisku palca. Wymaga uprawnień możliwość zobaczenia danych geolokalizacyjnych nie zmniejsza entropii dodatkowej, którą lokalizacja zwiększa niepowtarzalność odcisku palca, eliminuje zasadniczo wykorzystywanie geolokalizacji do pobierania odcisków cyfrowych, ponieważ nie jest ona już wykonywana w sposób niewidoczny. Cały sens tworzenia odcisków palców polega na niejawnym odróżnianiu użytkowników od siebie. Jeśli wiesz, że użytkownik wie, że próbujesz go zidentyfikować, nie musisz stosować technik tworzenia odcisków palców: poproś użytkownika o utworzenie konta i zalogowanie się na nie.
Dodawanie nieprzewidywalności
Trzecim podejściem stosowanym w niektórych przypadkach jest
dostosowanie dostawców przeglądarek. odpowiedzi z interfejsów API, aby były mniej szczegółowe
i przez to mniej identyfikowalna. Zostało to opisane w ramach mechanizmu reakcji losowej w module danych.
które możesz stosować przy gromadzeniu danych o użytkownikach, aby uniknąć nieumyślnego zbierania danych umożliwiających identyfikację. Dostawcy przeglądarek
może zastosować podobne podejście do danych interfejsu API udostępnianych również aplikacjom internetowym i innym firmom. Przykładem są bardzo dokładne interfejsy API do pomiaru czasu, które służą do pomiaru wydajności strony (window.performance.now()
). Przeglądarka zna te wartości
dokładności do mikrosekund, ale zwracane wartości są celowo zmniejszane z dokładnością przez zaokrąglanie do najbliższych 20 mikrosekund
aby uniknąć ich użycia w odciskach cyfrowych (a także w celu zapewnienia bezpieczeństwa w celu uniknięcia ataków czasowych. Celem jest
w celu zapewnienia przydatności interfejsów API, ale aby odpowiedzi były mniej identyfikowane: w zasadzie aby zapewnić „odporność stabilną”. tworząc
Twoje urządzenie nie jest niczym dziwne, lecz przypomina urządzenie innej osoby. Safari wyświetla uproszczoną wersję konfiguracji systemu.
Egzekwowanie budżetu na potrzeby prywatności
Budżet na potrzeby prywatności to propozycja, która sugeruje, że przeglądarki powinny szacować informacje ujawniane przez każdą powierzchnię do pozyskiwania odcisków palców. Nie została jeszcze zaimplementowana w przeglądarkach. Celem jest udostępnienie zaawansowanych interfejsów API przy jednoczesnej ochronie prywatności użytkowników. Więcej informacji o propozycji budżetu na prywatność
Korzystaj z obszernego środowiska testowego
Wszystkie te czynniki wpłyną na sposób tworzenia aplikacji i usług. W tym zakresie występuje szczególnie duża różnorodność odpowiedzi i podejść w różnych przeglądarkach i na różnych platformach. Oznacza to, że testowanie pracy w różnych środowiskach jest krytyczne. Jest to oczywiście ważne, ale rozsądnie można przyjąć, że renderowanie HTML i CSS będzie stałe dla danego silnika renderowania, niezależnie od używanej przeglądarki i platformy (dlatego testowanie tylko na jednej z nich może być kuszące. (np. w przeglądarce obsługującej Blink). W przypadku korzystania z interfejsu API jest to zdecydowanie nieprawdą, ponieważ przeglądarki, które korzystają z wspólnego silnika renderowania, mogą się znacznie różnić pod względem sposobu zabezpieczenia interfejsu API przed odciskami palców.
Tak
- Sprawdź własne dane analityczne i listę odbiorców, aby określić, które przeglądarki powinny być priorytetowe podczas testowania.
- Dobrymi zestawami przeglądarek są: Firefox, Chrome, Edge, Safari na komputerze, Chrome oraz Samsung Internet na Androidzie. oraz Safari na iOS. Dzięki temu możesz przetestować działanie 3 głównych silników renderowania (Gecko w Firefox, różne odgałęzi Blink w Chrome, Edge i Samsung Internet oraz WebKit w Safari) na platformach mobilnych i komputerowych.
- Jeśli Twoja witryna może być używana również na mniej popularnych urządzeniach, takich jak tablety, zegarki smartwatche i konsole do gier, zrób to również na tej platformie. Niektóre platformy sprzętowe mogą być w tyle w stosunku do aktualizacji przeglądarek na urządzeniach mobilnych i komputerach, co oznacza, że niektóre interfejsy API mogą być niezaimplementowane lub niedostępny w przeglądarkach na tych platformach.
- Przetestuj w co najmniej 1 przeglądarce, która twierdzi, że prywatność użytkownika jest dla niej motywacją. Uwzględnij nadchodzące wersje wstępne i testowe najpopularniejszych przeglądarek, jeśli są dostępne: Technology Preview w Safari, Canary w Chrome oraz kanał beta w Firefox. Dzięki temu masz największe szanse na wykrycie przerw w działaniu interfejsu API i zmian, które wpływają na Twoje witryny, zanim zmiany te wpłyną na użytkowników. Podobnie jak w przypadku użytkowników, w kontekście dostępnych statystyk. Jeśli użytkownicy korzystają z dużej liczby starszych telefonów z Androidem, więc uwzględnij je w testach. Większość osób nie ma tak szybkiego sprzętu i najnowszych wersji, jak zespół programistów.
- Testuj z użyciem czystego profilu i trybu incognito lub przeglądania prywatnego. jest prawdopodobne, że udzieliłeś już wcześniej wymagane uprawnienia wymagane w profilu osobistym. Sprawdź, co się stanie, jeśli odmówisz stronie dostępu do danych.
- Przetestuj strony w przeglądarce Firefoks z funkcją ochrony przed odciskami cyfrowymi. i trybu uzyskiwania zgody. Spowoduje to wyświetlenie okien z uprawnieniami, jeśli strona próbuje pobrać odcisk cyfrowy, a w przypadku niektórych interfejsów API zwraca rozmyte dane. Dzięki temu możesz sprawdzić, czy osoby trzecie korzystające z Twojej usługi używają danych umożliwiających identyfikację, lub czy Twoja usługa na tym polega. Możesz wtedy rozważyć, czy celowe rozmyczanie utrudnia Ci wykonanie tego, czego potrzebujesz. Rozważ wprowadzenie odpowiednich poprawek, aby uzyskać te dane z innego źródła, zrezygnuj z nich lub użyj mniej szczegółowych danych.
- Jak już wspomnieliśmy w module o usługach zewnętrznych, warto też sprawdzić, czy zewnętrzne usługi, na których polegasz, nie stosują technik odciskania palca. Pasywny odcisk palca jest trudny do wykrycia (a w przypadku, gdy jest używany przez osoby trzecie na ich serwerze, w ogóle niemożliwy do wykrycia), ale tryb tworzenia odcisków palców może sygnalizować niektóre techniki tworzenia odcisków palców. Szukanie użycia navigator.userAgent lub nieoczekiwanego tworzenia obiektów
<canvas>
może też ujawnić niektóre podejścia, które wymagają dalszej analizy. Warto także rozważyć użycie terminu „dopasowanie prawdopodobne”. w marketingu lub materiały techniczne opisujące osobę trzecią; może to wskazywać na użycie technik odcisku cyfrowego.
Narzędzia do testowania w różnych przeglądarkach
Testowanie kodu pod kątem prywatności jest trudne do zautomatyzowania, a w poprzednim punkcie opisaliśmy, na co zwracać uwagę podczas testowania ręcznego. Co się dzieje, gdy odmawiasz stronie dostępu do interfejsów API, do których próbuje się dostać? Jak to jest przedstawiane użytkownikowi? Automatyczny test nie może ocenić, czy witryna działa w sposób, który budzi zaufanie użytkownika, czy też wręcz przeciwnie – wzbudza w nim nieufność lub skłania do myślenia, że coś jest ukryte.
Po sprawdzeniu witryny można jednak zautomatyzować testy interfejsów API, aby potwierdzić, że nic nie jest uszkodzone w nowszych wersjach przeglądarek (lub w nadchodzących wersjach „beta” i „podglądowych”). Testy te powinny być częścią istniejącego zestawu testów. Coś należy rozważyć w przypadku narzędzi do automatycznego testowania, że większość przeglądarek zezwala na pewien poziom kontroli nad dostępnością interfejsów API i funkcji. Chrome robi to za pomocą przełączników wiersza poleceń, podobnie jak Firefox. Dzięki dostępowi do tych ustawień w konfiguracji narzędzia do testowania możesz uruchamiać określone testy z wyłączonymi lub włączonymi interfejsami API. (sposoby dodawania flag przeglądarki podczas uruchamiania znajdziesz na przykład w pliku plugin-launch plugin Cypressa i parametrze launch.args puppeteer).
Używanie tylko ciągu user-agent do uzyskiwania ogólnych informacji
Innym przykładem jest to, że od początku istnienia sieci przeglądarki wysyłają opis siebie w każdym żądaniu w nagłówku HTTP User-Agent. Już od niemal tak długiego czasu użytkownicy namawiają programistów stron internetowych, aby nie używali nagłówka klienta użytkownika wyświetlania różnych treści w różnych przeglądarkach, a przez cały ten czas twórcy stron internetowych i tak robili to, przy czym w niektórych (ale nie we wszystkich) przypadkach. Przeglądarki nie chcą, by witryny były dla nich optymalizowane, skutkuje to tym, że każda przeglądarka podszywa się pod każdą z innych przeglądarek, a ciąg znaków klienta użytkownika wygląda mniej więcej tak:
Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36
.
Twórcy twierdzą, że jest to między innymi Mozilla/5.0, przeglądarka, która została wydana w tym samym czasie, gdy pierwsi astronauci poleciły na pokład Międzynarodowej Stacji Kosmicznej ponad dwie dekady temu. Ciąg znaków klienta użytkownika jest bogatym źródłem entropii wykrywania odcisków palców, oczywiście, aby zminimalizować ryzyko odcisków cyfrowych, producenci przeglądarek zablokowali już nagłówek klienta użytkownika lub pracują w tej chwili w tym kierunku. To kolejny przykład zmiany danych dostarczanych przez interfejs API bez konieczności jego całkowitego usunięcia. Wysyłanie pustego nagłówka user-agent spowodowałoby nieprawidłowe działanie niezliczonych witryn, które zakładają, że on tam jest. Ogólnie rzecz biorąc, polega na usunięciu z niej części szczegółów, a potem zachowanie jej w większości niezmienionej. (Widać to w Safari, Chrome, i Firefox). Ta ochrona przed szczegółowym rozpoznawaniem odcisków palców oznacza, że nie możesz już polegać na dokładności nagłówka user-agent. Jeśli tak robisz, musisz znaleźć alternatywne źródła danych.
Dane w user-agent nie znikną całkowicie, ale będą dostępne z mniejszą rozdzielczością lub będą czasami niedokładne, ponieważ może być raportowana starsza, ale niezmieniona liczba. Na przykład Firefox, Safari i Chrome ograniczają zgłaszaną wersję macOS do 10 (więcej informacji znajdziesz w artykule Aktualizacja informacji o obsługiwanych klientach). Szczegółowe informacje o tym, jak Chrome planuje redukować dane w ciągu znaków User-Agent, znajdziesz w artykule Redukowanie ciągu znaków User-Agent. Krótko mówiąc, możesz oczekiwać, że zgłaszany numer wersji przeglądarki będzie zawierać tylko wersję główną (czyli będzie wyglądać jak 123.0.0.0, nawet jeśli przeglądarka ma wersję 123.10.45.108), a wersja systemu operacyjnego będzie pozbawiona szczegółów i będzie zablokowana na jednym z niewielkiej liczby niezmiennych opcji. Tak więc wymyślona wersja Chrome 123.45.67.89 działająca na wymyślonym systemie „Windows 20” miałaby numer wersji:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/123.0.0.0 Safari/537.36
Podstawowe informacje, których potrzebujesz (wersja przeglądarki), są nadal dostępne. To Chrome 123 w systemie Windows. Jednak informacje dodatkowe (architektura układu, wersja Windows, wersja Safari, która jest naśladowana, mniejsza wersja przeglądarki) nie będą już dostępne po zamrożeniu.
Porównaj to z „bieżącym” klientem użytkownika Chrome na innej platformie:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
,
widać, że jedyną różnicą jest numer wersji Chrome (104) i identyfikator platformy.
Podobnie ciąg znaków user-agent przeglądarki Safari zawiera informacje o platformie i wersji Safari, a także o wersji systemu operacyjnego w iOS, ale wszystkie inne dane są zamrożone. Wyobraźmy sobie, że fikcyjna wersja Safari 1234.5.67 działa na fikcyjnym systemie macOS 20. W takim przypadku identyfikator użytkownika może wyglądać tak:
Mozilla/5.0 (Macintosh; **Intel Mac OS X 10_20_0**) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15
,
a na wymyślnym iOS 20:
Mozilla/5.0 (iPhone; CPU **iPhone OS 20_0** like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/**20.0 Mobile/15E148 Safari/605.1.15**
.
Przypominamy, że dostępne są podstawowe informacje (m.in. Safari w wersji na iOS lub macOS). Natomiast w Safari na iOS nadal jest dostępny numer wersji iOS. ale wiele dodatkowych informacji, które były dostępne w przeszłości, zostało zamrożonych. Ważne: obejmuje to numer wersji Safari, który nie zawsze jest dostępny.
Zmiany w kliencie użytkownika były przedmiotem gorących dyskusji. https://github.com/WICG/ua-client-hints#use-cases summarises zawiera podsumowanie niektórych argumentów i powodów, dla których wprowadzono zmiany, a Rowan Merewood udostępnił prezentację z kilkoma strategiami przejścia na inne sposoby rozróżniania użytkowników niż ich identyfikatory klienta w kontekście propozycji dotyczącej podpowiedzi dotyczących klienta UA.
Rozmycie
Fuzzing to termin z zakresu praktyk związanych z bezpieczeństwem, w których interfejsy API są wywoływane z nieoczekiwanymi wartościami w nadziei, że nie będą one poprawnie obsługiwać tych nieoczekiwanych wartości i ujawnią problem z bezpieczeństwem. Deweloperzy powinni znać skrypty międzywitrynne (XSS), które polegają na dodawaniu do strony złośliwego skryptu, często dlatego, że strona nieprawidłowo interpretuje wstrzyknięty kod HTML (wyszukujesz więc tekst <script>
). Deweloperzy backendu będą wiedzieć o wstrzykiwaniu SQL,
gdzie zapytania do bazy danych, które nie weryfikują poprawnie danych wejściowych użytkownika, narażają problemy z bezpieczeństwem (co wyraźnie zostało pokazane w xkcd przy użyciu
małych stolików Bobby). Rozmycie, czyli testowanie rozmycia, jest bardziej poprawne
używane do zautomatyzowanych prób dostarczenia wielu różnych nieprawidłowych lub nieoczekiwanych danych wejściowych do interfejsu API oraz do sprawdzania wyników pod kątem wycieków zabezpieczeń;
lub innej niewłaściwej obsługi. To wszystko przykłady celowego podawania niedokładnych informacji. W tym przypadku przeglądarki robią to zapobiegawczo (celowo podając nieprawidłowy identyfikator użytkownika), aby zachęcić deweloperów do zaprzestania polegania na tych danych.
Tak
- Sprawdź bazę kodu pod kątem zaufania do ciągu klienta użytkownika (wyszukiwanie hasła
navigator.userAgent
prawdopodobnie znajdzie większość wystąpień w kodzie po stronie klienta, a kod backendu prawdopodobnie będzie szukałUser-Agent
jako nagłówka), łącznie z zależności. - Jeśli w swoim kodzie zauważysz przypadki użycia, dowiedz się, do czego służy ten kod, i znajdź inny sposób na to rozróżnienie. (albo znajdź zależność zastępczą lub skontaktuj się z zależnością nadrzędną, zgłaszając problemy lub sprawdzając dostępność aktualizacji). Czasami rozróżnianie przeglądarek jest konieczne do obejścia błędów, ale po zamrożeniu klienta użytkownika będzie to coraz rzadziej możliwe.
- Twoje bezpieczeństwo może być bezpieczne. Jeśli używasz tylko podstawowych wartości marki, wersji głównej i platformy, prawie na pewno będą one nadal dostępne i prawidłowe w ciągu user-agent.
- W MDN znajdziesz opis dobrych sposobów na uniknięcie polegania na ciągu znaków klienta użytkownika ("sniffing przeglądarka"), których głównym celem jest wykrywanie cech.
- Jeśli w jakiś sposób polegasz na ciągu znaków klienta użytkownika (nawet gdy używasz tych kilku podstawowych wartości, które pozostają przydatne), warto do przetestowania nowych klientów użytkownika. Możesz przetestować te nadchodzące wersje przeglądarki za pomocą wersji beta lub wersji technicznej w poziomie podglądu, ale możesz też ustawić niestandardowy ciąg zapytania użytkownika na potrzeby testów. Podczas lokalnego tworzenia możesz zastąpić ciąg tekstowy klienta użytkownika w Chrome, Firefoksie i Safari, aby sprawdzić, jak Twój kod obsługuje różne wartości klienta użytkownika, które mogą być wysyłane przez użytkowników.
Wskazówki dla klienta
Jedną z głównych propozycji dotyczących udostępniania tych informacji są wskaźniki klienta User-Agent, choć nie są one obsługiwane we wszystkich przeglądarkach. Obsługiwane przeglądarki przekazują 3 nagłówki: Sec-CH-UA
, co daje
marka i numer wersji przeglądarki; Sec-CH-UA-Mobile
, który wskazuje, czy żądanie pochodzi z urządzenia mobilnego. i Sec-CH-UA-Platform
,
który jest nazwą systemu operacyjnego. (Analiza nagłówków nie jest prosta, niż się wydaje, ponieważ są
uporządkowane nagłówki zamiast prostych ciągów znaków,
Jest to wymuszane przez przeglądarki, które wysyłają „trafne” wartości, które nie będą poprawnie odczytywane, jeśli nie zostaną poprawnie przeanalizowane. Podobnie jak wcześniej, jest to przykład „testowania fuzz” przeprowadzanego przez przeglądarkę w celu zapobiegania problemom. Deweloper korzystający z tych danych musi je prawidłowo przetwarzać, ponieważ są one tak zaprojektowane, że nieprawidłowe lub niedbałe parsowanie może dać złe wyniki, np. wyświetlać marki, które nie istnieją, lub ciągi znaków, które nie są prawidłowo zamykane. Na szczęście te dane są również udostępniane przez przeglądarkę do kodu JavaScript bezpośrednio jako
navigator.userAgentData
, który w obsługiwanej przeglądarce może wyglądać mniej więcej tak:
{
"brands": [
{
"brand": " Not A;Brand",
"version": "99"
},
{
"brand": "Chromium",
"version": "96"
},
{
"brand": "Google Chrome",
"version": "96"
}
],
"mobile": false
}