Fingerprinting

Beim Fingerprinting wird versucht, einen Nutzer zu identifizieren, wenn er zu Ihrer Website zurückkehrt, oder denselben Nutzer über verschiedene Websites hinweg identifizieren. Die Einrichtung Ihres Geräts kann von der eines anderen Nutzers abweichen. Beispiel: Sie verwenden möglicherweise einen anderen Gerätetyp und einen anderen Browser haben, unterschiedliche Bildschirmgrößen haben und verschiedene Schriftarten installiert sind. Wenn ich die Schriftart "Dejavu Sans" habe, installiert ist, kann jede Website anhand dieser Schriftart zwischen Ihnen und mir unterscheiden. So Fingerprinting funktioniert, erstellen Sie eine Sammlung dieser Datenpunkte, die jeweils mehr Möglichkeiten bieten, zwischen Nutzenden zu unterscheiden.

Eine förmlichere Definition könnte wie folgt aussehen: Fingerprinting ist die Aktion der Verwendung offensichtlicher und nicht offensichtlicher, langlebiger Merkmale der Nutzereinrichtung, um sie von möglichst vielen anderen Nutzern zu unterscheiden.

Warum Fingerprinting den Datenschutz für Nutzer beeinträchtigt

Es gibt einige Grenzfälle, in denen das Fingerprinting eines Nutzers wichtig ist, z. B. bei der Betrugserkennung. Fingerprinting kann aber auch werden, um Nutzer websiteübergreifend nachzuverfolgen, und dass das Tracking oft ohne Einwilligung der Nutzer oder, in einigen Fällen, auf der Grundlage unzulässiger Einwilligung, durch die der Nutzer nicht angemessen informiert wird. Wenn dies erledigt ist, wird dies Nutzern beunruhigend und eher betrogen fühlen.

Beim Fingerprinting werden Nutzer verdeckt identifiziert. Mithilfe von Fingerprinting können wir erkennen, Es handelt sich immer noch um denselben Nutzer auf derselben Website oder um denselben Nutzer in zwei verschiedenen Browserprofilen gleichzeitig zu erkennen. Das bedeutet, dass Fingerprinting zum websiteübergreifenden Tracking von Nutzern verwendet werden kann. Die deterministischen und offensichtlichen Verfolgungsmethoden wie das Speichern eines Cookies mit einer eindeutigen nutzerspezifischen ID, kann von den Nutzern in gewissem Umfang beobachtet und kontrolliert werden. Im vorherigen Modul wurden einige dieser Ansätze erläutert. Fingerprinting ist jedoch schwieriger zu vermeiden, weil es verdeckt ist. basiert sie auf unveränderlichen Eigenschaften und geschieht höchstwahrscheinlich unsichtbar. Deshalb heißt es: „Fingerabdruck“. Es ist im Idealfall schwierig, Ihren Fingerabdruck zu ändern, sei es Ihr digitaler oder an den Enden. Ihrer Finger.

Browseranbieter wissen, dass Nutzer kein Tracking wünschen, und implementieren kontinuierlich Funktionen, um das Fingerprinting einzuschränken. (einige davon im vorherigen Modul). Wir sehen uns an, wie sich diese Funktionen auf Ihr Unternehmen und wie Sie Ihre Ziele datenschutzfreundlich umsetzen können. In diesem Video geht es um den Browserschutz. gegen Fingerprinting beeinflusst, was Sie wie tun und was Sie tun, und nicht darauf, wie es die Verwendung des Fingerprinting unterbindet.

In der Praxis müssen die meisten Entwickler und Unternehmen keine Fingerabdrücke von Nutzern erstellen. Wenn Nutzer sich in Ihrer App anmelden müssen, dann identifizieren sich die Nutzer mit Ihnen selbst, mit ihrer Einwilligung und in einer Weise, die sie einseitig jederzeit ändern. Dies ist eine datenschutzfreundliche Methode, um nachzuvollziehen, welche Nutzer angemeldet sind. Ihre App darf dass Nutzer sich überhaupt anmelden müssen, um die (und Sie sammeln genau die Daten, die Sie benötigen).

Do

Drittanbieter auf Fingerprinting prüfen Im Modul Drittanbieter haben möglicherweise bereits eine Liste aller Drittanbieterdienste, die Sie einschließen, und die entsprechenden Webanfragen. Möglicherweise um diese Anfragen daraufhin zu überprüfen, welche Daten gegebenenfalls an den Urheber zurückgegeben werden. Dies ist jedoch oft schwierig, Fingerprinting ist von Natur aus ein verdeckter Prozess, bei dem Daten angefordert werden, die nicht der Genehmigung des Nutzers unterliegen.

Es empfiehlt sich, auch die Datenschutzerklärungen Ihrer Drittanbieterdienste und -abhängigkeiten zu lesen und nach Anzeichen für Fingerprinting zu suchen. verwendet wird. Sie wird auch als „probabilistischer Abgleich“ oder als Teil einer Reihe von Verfahren zum Abgleich probabilistischer Übereinstimmungen bezeichnet. und nicht den „deterministischen Abgleich“.

So funktioniert Fingerprinting

Häufig ist Ihre persönliche Kombination all dieser Attribute einzigartig für Sie oder am wenigsten einer kleinen Gruppe ähnlicher Personen zu präsentieren; kann man dich damit heimlich verfolgen.

Nebenbemerkung: passives und aktives Fingerprinting

Es gibt einen sinnvollen Unterschied zwischen passiven und aktiven Fingerprinting-Techniken. Passives Fingerprinting werden standardmäßig an die Website übermittelte Informationen verwendet. sind aktive Fingerprinting-Techniken das den Browser explizit nach zusätzlichen Informationen abfragt. Diese Unterscheidung ist wichtig, können versuchen, aktive Techniken zu erkennen und abzufangen oder zu mindern. APIs können eingeschränkt oder hinter einem Dialog Gateway durchgestellt werden nach der Berechtigung des Nutzers fragen (und den Nutzer darüber informieren oder ihm erlauben, dies abzulehnen) standardmäßig). Bei einer passiven Technik werden Daten verwendet, die bereits an die Website übermittelt wurden. Dies liegt oft daran, dass in der Vergangenheit in den Anfangstagen der Informationsflut, wurden diese Informationen allen Websites zur Verfügung gestellt. Der User-Agent-String ist ein Wir werden uns das später genauer ansehen. Es galt als hilfreich, um eine große Menge Informationen über Browser, Version und Betriebssystem des Nutzers, damit eine Website verschiedene und Dinge, die darauf basieren. Allerdings werden dadurch auch mehr Unterscheidungsmerkmale, Informationen um Nutzende voneinander zu unterscheiden. Deshalb sind solche Informationen zunehmend nicht mehr verfügbar oder zumindest eingefroren. damit es nicht mehr vom anderen abhebt. Wenn Ihre Vorgehensweise auf diesen Informationen basiert, z. B. wenn Sie Codeverzweigungen je nach User-Agent – dann kann dieser Code beschädigt werden, da Browser zunehmend einfrieren oder diese Information stoppen. Tests sind hier die beste Abwehr ( mehr dazu später).

Nebenbemerkung: Fingerabdruckbarkeit messen

Das technische Maß dafür, wie viele Informationen jeder dieser Datenpunkte bereitstellt, wird als Entropie bezeichnet und wird in Bit gemessen. Eine Funktion, bei der es viele verschiedene mögliche Werte gibt (z. B. die Liste der installierten Schriftarten), kann eine große Wirkung haben. Dadurch kann etwas ohne Unterscheidungsmerkmale (wie das verwendete Betriebssystem) ein paar. Im HTTP-Almanac wird beschrieben, wie die Verwendung von Fingerprinting automatisieren. Dabei werden die Antworten vieler verschiedener APIs in einem „Hash“ zusammengefasst, wodurch möglicherweise nur ein einer kleinen Gruppe von Nutzenden, vielleicht sogar nur einer. Maud Nalpas beschreibt dies ausführlich in in diesem YouTube-Video ansehen. Kurz gesagt: eine Liste deiner Freunde mit ihrer Lieblingsmusik, ihrem Lieblingsessen und den Sprachen, die sie sprechen... aber mit ihren Namen entfernt. Es ist sehr wahrscheinlich, dass die Liste einer Person diese Person eindeutig unter Ihren Freunden identifiziert oder zumindest eingegrenzt wird. die Liste auf ein paar wenige Personen reduziert. So funktioniert das Fingerprinting: wird die Liste der Dinge, die Ihnen gefallen, zum Hash. Mit ist es einfacher, Nutzer auf zwei verschiedenen, nicht verbundenen Websites als dieselbe Person zu identifizieren. Tracking: um den Datenschutzwunsch des Nutzers zu umgehen.

Was unternehmen Browser gegen Fingerprinting?

Wichtig ist, dass Browser-Anbieter viele verschiedene Möglichkeiten kennen, wie eine Website (oder ein auf einer Website enthaltener Drittanbieter) funktioniert. zur Berechnung eines unterscheidenden Fingerabdrucks für einen Nutzer oder für unterschiedliche Informationen, die zur Eindeutigkeit beitragen. dieses Fingerabdrucks. Einige dieser Methoden sind explizit und beabsichtigt, wie z. B. die User-Agent-Zeichenfolge des Browsers, die häufig identifiziert den Browser, das Betriebssystem und die verwendete Version (und trägt so dazu bei, Sie von mir zu unterscheiden, falls Sie und Ich verwende einen anderen Browser). Manche davon wurden nicht absichtlich so konzipiert, dass sie Fingerabdrucksensoren sind. wie z. B. die Liste der Schriftarten oder die für den Browser verfügbaren Video- und Audiogeräte. Der Browser muss die erhalten Sie eine Liste mit deren Namen.) Manche tragen nachweislich zum Fingerabdrucksensor bei. nach der Veröffentlichung, z. B. das genaue Pixel-Rendering von Kantenglättung von Schriftarten auf einem Canvas-Element. Es gibt noch viele weitere. Jede Art und Weise, wie sich Ihr Browser von meinem unterscheidet, erhöht die Entropie und trägt so potenziell zu einem den Unterschied zwischen Ihnen und mir zu erkennen und Einzelpersonen auf Websites so eindeutig wie möglich zu identifizieren. Unter https://amiunique.org findest du eine lange (aber keineswegs umfassende Liste) Funktionen, und die Liste wird ständig erweitert, da ein hohes finanzielles Interesse daran besteht, Nutzer-IDs per Fingerabdruck zu finden, selbst wenn die Nutzer das nicht möchten oder vielleicht nicht erwarten).

Bestimmte leistungsstarke APIs werden nicht unterstützt

Browseranbieter reagieren auf all diese Ansätze zur Berechnung des Fingerabdrucks. Es geht darum, Möglichkeiten zu finden, die von diesen APIs verfügbare Entropiemenge. Die restriktivste Option besteht darin, sie nicht von vornherein zu implementieren. Dies ist bei einigen gängigen Browsern für eine Vielzahl von Hardware- und Geräte-APIs der Fall, z. B. NFC- und Bluetooth-Zugriff von clientseitige Webanwendungen) mit Fingerprinting und Bedenken im Hinblick auf den Datenschutz als Gründe angegeben, warum sie nicht implementiert wurden. Dies, sich auf Ihre Anwendungen und Dienste auswirken kann: Sie können eine API in einem Browser, der sie nicht implementiert, nicht verwenden. Dies kann einige Hardware-Ansätze vollständig oder gar nicht in Betracht zu ziehen.

Das Gateway für Nutzerberechtigungen

Ein zweiter Ansatz von Browseranbietern besteht darin, API- oder Datenzugriffe ohne ausdrückliche Benutzererlaubnis zu verhindern. Dieser Ansatz wird häufig auch aus Sicherheitsgründen gewählt: Eine Website sollte keine Bilder mit Ihrer Webcam aufnehmen können. ohne deine Erlaubnis! Aber hier können Datenschutz und Sicherheit ähnliche Interessen haben. Die Standortbestimmung ist ein Datenschutzverletzung an sich, trägt aber auch zur Einzigartigkeit eines Fingerabdrucks bei. Berechtigung erforderlich zum Erkennen der Standortbestimmung, vermindert sich dadurch nicht die zusätzliche Entropie, die ein Standort zur Eindeutigkeit dieses Fingerabdrucks beiträgt, eliminiert im Grunde die Verwendung der Standortbestimmung für das Fingerprinting, da dies nicht mehr unsichtbar ist. Der Sinn von Mithilfe von Fingerprinting lassen sich Nutzer verstanden voneinander unterscheiden. Wenn Sie darauf vorbereitet sind, dass die Nutzenden wissen, zu identifizieren, benötigen Sie keine Fingerprinting-Techniken: Bitten Sie den Nutzer, ein Konto zu erstellen und sich anzumelden. damit nichts.

Unvorhersehbarkeit hinzufügen

Ein dritter Ansatz, der in einigen Fällen verfolgt wird, besteht darin, dass Browseranbieter „Fuzz“ verwenden, die Antworten von APIs, um sie weniger detailliert zu gestalten und somit weniger identifizierend. Dies wurde als Teil der randomisierten Antwort im Datenmodul als etwas beschrieben: die Sie beim Erfassen von Daten von Nutzenden anwenden können, um zu vermeiden, dass versehentlich Daten erhoben werden, die identifizierende Personen identifizieren. Browseranbieter können diesen Ansatz auch auf API-Daten anwenden, die Web-Apps und Dritten zur Verfügung gestellt werden. Ein Beispiel hierfür ist der sehr präzise Timing-APIs zur Messung der Seitenleistung von window.performance.now(). Der Browser kennt diese Werte bis auf Mikrosekundengenauigkeit, aber die Genauigkeit der zurückgegebenen Werte wird durch Rundung auf die nächsten 20 Mikrosekunden absichtlich reduziert. um deren Verwendung im Fingerprinting und die Sicherheit zu vermeiden, um zeitgesteuerte Angriffe zu vermeiden. Das Ziel hier ist, um sicherzustellen, dass die APIs nützlich bleiben, aber die Antworten weniger identifizierend zu machen, also um im Wesentlichen eine „Herdenimmunität“ zu schaffen. indem Sie Ihr Gerät ähnelt eher dem Gerät der anderen als Ihnen selbst. Safari stellt eine vereinfachte Version der Systemkonfiguration dar genau aus diesem Grund.

Durchsetzung eines Datenschutzbudgets

Privacy Budget ist ein Vorschlag, der darauf hinweist, dass Browser die durch die Fingerprinting-Oberfläche ermittelten Informationen schätzen. Sie wurde noch nicht in Browsern implementiert. Ziel ist es, leistungsstarke APIs zu ermöglichen und gleichzeitig den Datenschutz für Nutzer zu wahren. Weitere Informationen zum Vorschlag für ein Datenschutzbudget

Eine umfassende Testumgebung verwenden

All dies wirkt sich auf die Entwicklung von Apps und Diensten aus. Insbesondere gibt es eine große Vielfalt an Antworten und Ansätzen, verschiedenen Browsern und Plattformen. Das bedeutet, dass es kritisch ist, Ihre Arbeit in verschiedenen Umgebungen zu testen. Dies ist natürlich immer wichtig, aber es kann vernünftig sein, davon auszugehen, dass das HTML-Rendering oder CSS für ein egal, in welchem Browser oder auf welcher Plattform sich die Engine befindet. Daher ist es verlockend, Tests nur in einem z. B. blinkbasierter Browser). Dies trifft eindeutig nicht auf die API-Nutzung zu, denn Browser, die denselben Rendering-Engine kann sich erheblich unterscheiden, wie sie ihre API-Oberfläche gegen Fingerprinting härten.

Do

  • Überprüfen Sie Ihre eigenen Analysen und Zielgruppen, um die Browser festzulegen, die Sie beim Testen priorisieren sollten.
  • Zum Testen eignen sich vor allem Firefox, Chrome, Edge, Safari auf dem Desktop, Chrome und Samsung Internet auf Android-Geräten, und Safari unter iOS. So werden Tests mit den drei wichtigsten Rendering-Modulen (Gecko in Firefox, verschiedenen Forks von Blink) in Chrome, Edge und Samsung Internet und WebKit in Safari sowie auf mobilen und Desktop-Plattformen.
  • Falls eure Website eventuell auch auf weniger gängigen Geräten wie Tablets, Smartwatches oder Spielekonsolen verwendet wird, solltet ihr dort auch den Test durchführen. Einige Hardwareplattformen hinken bei Browserupdates möglicherweise hinter der mobilen und Desktop-Version zurück, was bedeutet, dass einige APIs möglicherweise nicht implementiert oder in den Browsern auf diesen Plattformen nicht verfügbar sind.
  • Testen Sie die App mit einem oder mehreren Browsern, in denen die Privatsphäre der Nutzer als Motivator behauptet wird. Bevorstehende Vorabveröffentlichungen und Testversionen einschließen der gängigsten Browser wo möglich und sofern verfügbar: die Technologievorschau von Safari, Canary von Chrome, die Betaversion von Firefox. Damit haben Sie die beste Chance, API-Fehler und Änderungen, die sich auf Ihre Websites auswirken, zu erkennen, bevor sich diese Änderungen auswirken. Ihre Nutzenden. Halten Sie auch die Erwartungen Ihrer Nutzer in Bezug auf Ihre vorhandenen Analysen entwickelt werden kann. Wenn Ihr Nutzerstamm eine hohe Anzahl von älteren Android-Smartphones. Beziehen Sie diese in Ihre Tests ein. Die meisten Menschen haben nicht Hardware und neueste Releases eines Entwicklerteams.
  • Testen Sie das Gerät mit einem sauberen Profil und im Inkognito- bzw. privaten Surfmodus. ist es wahrscheinlich, dass Sie bereits Berechtigungen erteilen, die für Ihr privates Profil erforderlich sind. Testen Sie, was passiert, wenn Sie der Website bei einer Frage die Berechtigung verweigern.
  • Ihre Seiten explizit mit dem Fingerabdruckschutz von Firefox testen . Dadurch werden Berechtigungsdialogfelder angezeigt, wenn Ihre Seite versucht, ein Fingerprinting zu erstellen, oder für einige APIs werden ungenaue Daten zurückgegeben. So können Sie feststellen, ob in Ihrem Dienst enthaltene Drittanbieter Fingerabdruckdaten verwenden oder ob Ihr eigener Dienst auf darauf. Sie können dann überlegen, ob es durch das absichtliche Fuzzing erschwert wird, die gewünschten Aktionen auszuführen. Erwägen Sie, entsprechende Korrekturen, um die Daten aus einer anderen Quelle zu beziehen, darauf zu verzichten oder weniger detaillierte Daten zu verwenden.
  • Wie bereits im Modul „Drittanbieter“ erläutert, ist es auch wichtig, um festzustellen, ob Fingerprinting-Techniken verwendet werden. Passives Fingerprinting ist schwer zu erkennen (und nicht möglich, wenn ein Drittanbieter dies auf seinem Server tut. Der Fingerprinting-Modus kann jedoch Wenn du nach der Verwendung von „navigator.userAgent“ oder einer unerwarteten Erstellung von <canvas>-Objekten suchst, können dir auch verschiedene Ansätze auffallen. die genauer überprüft werden sollten. Es lohnt sich auch, nach Verwendung des Begriffs „probabilistische Übereinstimmung“ zu suchen. im Marketing oder im technisches Material, das Dritte beschreibt, kann dies auf die Verwendung von Fingerprinting-Techniken hinweisen.

Tools für browserübergreifende Tests

Das Testen Ihres Codes aus Datenschutzgründen ist schwer zu automatisieren. Die Punkte, auf die Sie beim manuellen Testen achten müssen, sind weiter oben beschrieben. Was passiert beispielsweise, wenn Sie einer Website die Berechtigung für alle APIs verweigern, auf die sie zugreifen möchte, und wie werden diese dem Nutzer angezeigt? Ein automatisierter Test kann nicht beurteilen, ob die Website dem Nutzer Vertrauen entgegenbringt oder ihn zum Misstrauen ermutigt. oder glauben, dass etwas versteckt ist.

Sobald die Website jedoch überprüft wurde, das Testen von APIs, um sicherzustellen, dass in neueren Browser-Versionen (oder in anstehende "Beta" und „preview“ Versionen) können automatisiert werden und sollten größtenteils Teil deiner bestehenden Test-Suite sein. Etwas bei Ihren automatisierten Testtools ist, dass die meisten Browser bei der Arbeit mit API-Oberflächenabdeckung welche APIs und Funktionen verfügbar sind. Dazu werden in Chrome Befehlszeilen, genauso wie Firefox. Der Zugriff darauf ist über das Testtool möglich. können Sie bestimmte Tests mit deaktivierten oder aktivierten APIs durchführen. (Siehe z. B. das Buch Plug-in zum Starten eines Browsers den launch.args-Parameter von puppeteer für Möglichkeiten, um Browser-Flags beim Start hinzuzufügen.)

Nur bei groben Informationen den User-Agent-String verwenden

Ein weiteres Beispiel: Seit den Anfängen des Internets sendeten Browser bei jeder Anfrage im Web eine Beschreibung von sich selbst. HTTP-Header für User-Agent. Fast genauso lange wurden Webentwickler dazu ermutigt, den Inhalt des User-Agent-Headers nicht zu verwenden unterschiedlichen Content für verschiedene Browser bereitstellen. in manchen (aber nicht allen) Fällen. Da Browser für eine schlechtere Nutzererfahrung nicht einzeln behandelt werden sollen, Dies führt dazu, dass jeder Browser vorgibt, jeder andere Browser zu sein, und die User-Agent-Zeichenfolge sieht in etwa so aus:

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.

Hier wird unter anderem behauptet, Mozilla/5.0 sei ein Browser, der zeitgleich mit den ersten Astronauten auf den Markt gekommen ist. ging vor über zwei Jahrzehnten an Bord der Internationalen Raumstation. Der User-Agent-String ist eine umfangreiche Entropiequelle für das Fingerprinting. Um die Fingerabdrückbarkeit zu verringern, haben Browserhersteller den User-Agent-Header entweder bereits eingefroren oder dafür zu sorgen. Dies ist ein weiteres Beispiel für die Änderung der von einer API bereitgestellten Daten, ohne die API unbedingt vollständig zu entfernen. Das Senden eines leeren User-Agent-Headers würde unzählige Websites zerstören, die davon ausgehen, dass sie vorhanden ist. Grundsätzlich also, was Browser einige Details daraus zu entfernen und sie von da an meist unverändert zu lassen. (Sie können hier sehen, Safari, Chrome und Firefox. Dieser Schutz vor detailliertes Fingerprinting bedeutet, dass ihr euch nicht mehr darauf verlassen könnt, dass der User-Agent-Header korrekt ist. ist es wichtig, alternative Datenquellen zu finden.

Hinweis: Die Daten im User-Agent werden nicht vollständig gelöscht, sondern sind mit geringerer Granularität verfügbar manchmal ungenau, da eine ältere, sich nicht ändernde Zahl gemeldet wird. z. B. Firefox, Safari und Chrome (alle Caps) die angegebene macOS-Versionsnummer auf zehn (siehe Update zur Reduzierung von User-Agent-Strings) . Genaue Informationen dazu, wie Chrome die Datenmenge im User-Agent-String reduzieren möchte, finden Sie unter User-Agent-Reduzierung. Kurz gesagt: Die angezeigte Versionsnummer des Browsers enthält nur eine Hauptversion, also die Versionsnummer. wie 123.0.0.0 aussieht, auch wenn der Browser die Version 123.10.45.108 hat, und die Betriebssystemversion enthält keine Details und wird von einer kleinen Anzahl unveränderlicher Optionen fest. Die imaginäre Chrome-Version 123.45.67.89 wird also auf einem imaginären „Windows 20“ würde die Versionsnummer folgendermaßen melden:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36

Die wichtigsten Informationen (die Browserversion) sind weiterhin verfügbar: Chrome 123 für Windows. Die Tochtergesellschaft Informationen (die Chiparchitektur, die Windows-Version, die Version von Safari, die sie imitieren, die Nebenversion des Browsers) sind nach der Sperre nicht mehr verfügbar.

Vergleichen Sie dies mit einem „aktuellen“ Chrome-User-Agent auf einer anderen Plattform:

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36,

Der einzige Unterschied ist die Chrome-Versionsnummer (104) und die Plattformkennung.

Ebenso enthält der User-Agent-String von Safari eine Plattform und eine Safari-Versionsnummer sowie eine Betriebssystemversion unter iOS. aber alles andere ist eingefroren. Die imaginäre Safari-Version 1234.5.67, die auf einem imaginären macOS 20 ausgeführt wird, könnte ihren User-Agent also so erhalten:

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,

und auf einem imaginären iOS 20-Gerät könnte es so aussehen:

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**.

Wie bereits erwähnt, sind die wichtigsten Informationen (Safari, für iOS oder macOS) verfügbar und iOS Safari bietet weiterhin eine iOS-Versionsnummer. aber viele der bisher verfügbaren Zusatzinformationen sind seitdem eingefroren. Wichtig: Dies gilt auch für die Versionsnummer, die nicht unbedingt verfügbar ist.

Die Änderungen am gemeldeten User-Agent wurden heiß diskutiert. https://github.com/WICG/ua-client-hints#use-cases summarises einige der Argumente und Gründe für die Änderung. Rowan Merewood bietet eine Folienpräsentation an. mit einigen Strategien für die Migration weg von der Verwendung des User-Agent zur Differenzierung. Diese sind im Kontext des weiter unten erläuterten Vorschlags „Client Hints“ in UA beschrieben.

Fuzzing

Fuzzing ist ein Begriff aus der Sicherheitspraxis, bei dem APIs mit unerwarteten Werten aufgerufen werden, in der Hoffnung, dass sie diese und führt zu einem Sicherheitsproblem. Webentwickler sollten mit Cross-Site-Scripting (XSS) vertraut sein. bei dem einer Seite ein schädliches Skript hinzugefügt wird, oft weil die Seite eingeschleuste HTML nicht korrekt maskiert (Sie führen also eine Suchanfrage aus mit dem Text <script>). Backend-Entwickler werden über SQL-Injection informiert, Datenbankabfragen, die Nutzereingaben nicht korrekt validieren, stellen Sicherheitsprobleme offen (wie in xkcd mit Little Bobby Tables). Fuzzing bzw. Fuzzing ist sinnvoller. wird für automatisierte Versuche verwendet, viele verschiedene ungültige oder unerwartete Eingaben an eine API zu senden und die Ergebnisse auf Sicherheitslücken zu prüfen. Abstürze oder andere unangemessene Handhabung. Das sind alles Beispiele für die absichtliche falsche Angabe von Informationen. Hier wird es jedoch präventiv durch Browser (indem der User-Agent absichtlich falsch gesetzt wird), um Entwickler zu ermutigen, sich nicht mehr auf diese Daten zu verlassen.

Do

  • Prüfen Sie Ihre Codebasis auf Abhängigkeiten vom User-Agent-String. Eine Suche nach navigator.userAgent findet wahrscheinlich die meisten Vorkommnisse. in Ihrem clientseitigen Code ein, woraufhin Ihr Back-End-Code wahrscheinlich nach User-Agent als Header sucht, einschließlich Ihrer Abhängigkeiten.
  • Wenn Sie in Ihrem eigenen Code Verwendungszwecke finden, ermitteln Sie, worauf der Code prüft, und suchen Sie eine andere Methode, um diese Differenzierung durchzuführen. (oder nach einer Ersatzabhängigkeit suchen oder mit der vorgelagerten Abhängigkeit arbeiten, indem du Probleme meldest oder dich nach Updates wendest). Manchmal Eine Browserdifferenzierung ist notwendig, um Fehler zu umgehen, aber der User-Agent wird dies nach einer "froren"-Methode in zunehmendem Maße nicht mehr tun.
  • Du bist vielleicht in Sicherheit. Wenn ihr nur die Kernwerte Marke, Hauptversion und Plattform nutzt, sind diese und im User-Agent-String korrekt sein.
  • MDN beschreibt gute Möglichkeiten, die Abhängigkeit von dem User-Agent-String ("Browser-Sniffing") zu vermeiden. die Hauptfunktion ist die Funktionserkennung.
  • Wenn ihr euch in irgendeiner Weise auf den User-Agent-String verlässt (auch wenn ihr nur die wenigen Kernwerte verwendet, die noch nützlich sind), ist es eine gute Wahl, mit User-Agents testen, die in neuen Browser-Versionen verfügbar sein werden. Es ist möglich, mit diesen neuen Browsern Versionen selbst über Beta- oder Technologievorschau-Builds erstellen. Es ist aber auch möglich, einen benutzerdefinierten User-Agent-String für Tests durchführen. Sie können den User-Agent-String in Chrome, Edge Firefox und Safari bei der lokalen Entwicklung, um zu prüfen, wie Ihr Code mit verschiedenen User-Agent-Werten umgeht, die Sie möglicherweise von Nutzern erhalten.

Client-Hints

Ein großer Vorschlag hierfür sind User-Agent-Client-Hints. Dies wird jedoch nicht in allen Browsern unterstützt. Unterstützte Browser geben drei Header weiter: Sec-CH-UA, wodurch die Marke und die Versionsnummer des Browsers Sec-CH-UA-Mobile: Gibt an, ob die Anfrage von einem Mobilgerät stammt und Sec-CH-UA-Platform, der das Betriebssystem heißt. (Das Parsen dieser Header ist weniger einfach, als es scheint, Structured Headers anstelle von einfachen Strings, und dies wird erzwungen, indem Browser -Werte, die falsch behandelt werden, wenn sie nicht ordnungsgemäß geparst werden. Das heißt, wie zuvor ein Beispiel für Fuzzing-Tests durch den Browser. Ein Entwickler, der diese Daten verwendet, muss da die Daten so konzipiert sind, dass ein unsachgemäßes oder lazy Parsing wahrscheinlich zu schlechten Ergebnissen führt, z. B. dass Marken angezeigt werden, oder Zeichenfolgen, die nicht ordnungsgemäß geschlossen werden.) Glücklicherweise stellt der Browser JavaScript auch diese Daten direkt als navigator.userAgentData, der in einem unterstützenden Browser in etwa wie folgt aussehen könnte:

{
  "brands": [
    {
    "brand": " Not A;Brand",
    "version": "99"
    },
    {
    "brand": "Chromium",
    "version": "96"
    },
    {
    "brand": "Google Chrome",
    "version": "96"
    }
  ],
  "mobile": false
}