Fingerprinting

Il fingerprinting consiste nel tentare di identificare un utente quando torna sul tuo sito web o identificare lo stesso utente su siti web diversi. La tua configurazione potrebbe avere diverse caratteristiche da quelle di un altro utente. Ad esempio, potresti usare un tipo di dispositivo diverso e un altro browser, hanno dimensioni dello schermo diverse e hanno caratteri installati. Se ho il carattere "Dejavu Sans" se non lo hai installato, qualsiasi sito web può capire la differenza tra te e me cercando quel carattere. Ecco come il fingerprinting. crei una raccolta di questi punti dati, ciascuno dei quali offre ulteriori modi per distinguere gli utenti.

Una definizione più formale potrebbe avere il seguente aspetto: il fingerprinting è l'azione di utilizzare elementi ovvi e non ovvi di lunga durata. caratteristiche della sua configurazione per cercare di distinguerlo dal maggior numero possibile di altri utenti.

Perché il fingerprinting ostacola la privacy degli utenti

Ci sono alcuni casi limite in cui il fingerprinting di un utente è importante, ad esempio il rilevamento di attività fraudolente. Ma il fingerprinting può anche essere utilizzati per monitorare gli utenti su più siti e che il monitoraggio viene spesso eseguito senza il consenso degli utenti o, in alcuni casi, in base di un consenso non valido che non informa in modo adeguato l'utente. Quando questo è fatto, quegli utenti spesso lo troveranno in qualche modo inquietanti e sentirsi piuttosto traditi.

Il fingerprinting consiste nel trovare modi per distinguere occultamente un utente dall'altro. Il fingerprinting può essere usato per riconoscere che si tratta sempre dello stesso utente sullo stesso sito web o a riconoscere lo stesso utente in due diversi profili del browser contemporaneamente. Ciò significa che il fingerprinting può essere utilizzato per monitorare gli utenti su tutti i siti. I metodi deterministici e palesi di monitoraggio, come la memorizzazione di un cookie con un ID univoco specifico per l'utente, può essere in qualche modo osservato dagli utenti e controllati (mentre nel modulo precedente sono stati spiegati alcuni di questi approcci). Ma il fingerprinting è più difficile da evitare con precisione perché è nascosto. fa affidamento su caratteristiche immutabili e molto probabilmente avviene invisibilmente. Ecco perché viene chiamato "fingerprinting". Nella migliore delle ipotesi è difficile cambiare l'impronta digitale, sia quella digitale sia quella finale delle dita.

I fornitori di browser sanno che agli utenti non piace essere monitorati e implementano continuamente funzionalità per limitare il fingerprinting (alcuni dei quali visti nel modulo precedente). In questo articolo vedremo come queste funzionalità possono influire sulla tua attività e come continuare a fare ciò che vuoi nel rispetto della privacy. Qui vediamo più in che modo la protezione del browser contro il fingerprinting influenzerà le tue attività e le relative modalità, anziché l'eventuale interruzione del fingerprinting.

In pratica, la maggior parte degli sviluppatori e delle aziende non ha bisogno di inserire le impronte digitali degli utenti. Se la tua app richiede agli utenti di eseguire l'accesso, gli utenti si identificano con te, con il loro consenso e in modo da poter rifiutare unilateralmente in qualsiasi momento. Si tratta di un metodo di protezione della privacy che consente di capire quali utenti hanno eseguito l'accesso. L'app potrebbe non richiedere agli utenti di eseguire l'accesso, il che è ancora più sicuro nei confronti delle della privacy (e quindi raccoglierai solo i dati che ti servono).

Cosa fare

Valuta le terze parti per il fingerprinting. Nell'ambito del modulo Terze parti, puoi potrebbe già disporre di un elenco degli eventuali servizi di terze parti che hai incluso e delle richieste web che effettua. Potrebbe essere possibile per esaminare queste richieste per vedere quali dati vengono restituiti all'autore dell'origine, se presenti. Tuttavia, spesso è difficile: il fingerprinting è per natura un processo nascosto che prevede la richiesta di dati non soggetti all'approvazione dell'utente.

È opportuno leggere anche le norme sulla privacy dei servizi e delle dipendenze di terze parti per cercare indicazioni del fingerprinting. in uso. A volte è chiamata "corrispondenza probabilistica" o come parte di un insieme di tecniche di corrispondenza probabilistica. della "corrispondenza deterministica".

Come funziona il fingerprinting

Spesso la combinazione personale di tutti questi attributi è unica per te oppure in a un gruppo ristretto di persone con caratteristiche simili. può essere usato per rintracciarti in modo nascosto.

A parte: fingerprinting passivo e attivo

Qui occorre fare una distinzione utile tra le tecniche di fingerprinting passiva e attiva. Il fingerprinting passivo è quella che utilizza informazioni fornite al sito web per impostazione predefinita; una tecnica di fingerprinting attiva è una che interroga esplicitamente il browser per cercare informazioni aggiuntive. Questa distinzione è importante perché i browser può tentare di rilevare e intercettare, o mitigare, le tecniche attive. Le API possono essere limitate o collegate tramite gateway dietro a una finestra di dialogo Richiesta dell'autorizzazione dell'utente (e quindi avvisa l'utente che è in uso o consente all'utente di negarlo) per impostazione predefinita). Una tecnica passiva è quella che utilizza dati già forniti al sito web, spesso perché storicamente ai giorni nascenti della strada dell'informazione, queste informazioni venivano fornite a tutti i siti. La stringa dello user agent è un un esempio di questo aspetto, che vedremo in dettaglio più avanti. È stato considerato utile per fornire molte informazioni sul browser, sulla versione e sul sistema operativo dell'utente in modo che un sito web possa scegliere di presentare in base a ciò. Tuttavia, ciò aumenta anche la quantità di informazioni distintive rese disponibili, che aiuta a distinguere un utente dall'altro; Pertanto, queste informazioni non sono più disponibili o sono comunque congelate in modo da non fare più distinzione. Se ciò che fai si basa su queste informazioni, ad esempio, se prendi si ramificano in base allo user agent; questo codice potrebbe interrompersi man mano che i browser bloccano o interrompono sempre di più queste informazioni. In questo caso, i test sono la difesa migliore ( vedi più avanti).

A parte: misurare la fingerprintabilità

La misura tecnica per la quantità di informazioni fornite da ciascuno di questi punti dati si chiama entropia e viene misurata in bit. Una funzionalità per cui sono possibili molti valori diversi (come l'elenco dei caratteri installati) può contribuire con molti bit al totale, per cui un elemento con un potere di distinzione elevato (ad esempio il sistema operativo in uso) potrebbe aggiungere alcuni. HTTP Almanac (Almanacco HTTP) descrive il modo in cui il fingerprinting esistente librerie automatizzano questo processo di combinazione delle risposte di molte API diverse in un "hash", che può identificare solo un un gruppo ristretto di utenti, forse anche solo uno. Maud Nalpas tratta questo argomento in dettaglio questo video di YouTube, ma, in breve, immagina che dovessi vedere un elenco dei tuoi amici con la loro musica e il loro cibo preferito e le lingue che parlano... ma con i loro nomi. rimosso. È molto probabile che l'elenco di una persona la identifichi in modo univoco tra i tuoi amici o che sia comunque limitato solo ad alcune persone. È così che funziona il fingerprinting. l'elenco di cose che ti piacciono diventa "hash". Con questo hash, identificare un utente come la stessa persona su due diversi siti non collegati diventa più facile, che è l'obiettivo di monitoraggio: per eludere il desiderio di privacy dell'utente.

Cosa fanno i browser contro il fingerprinting?

È importante sottolineare che i fornitori di browser sono consapevoli di molti modi diversi per un sito web (o una terza parte inclusa in un sito web) per calcolare un'impronta digitale distintiva per un utente, o nel caso di bit di informazione diversi che contribuiscano all'unicità dell'impronta digitale. Alcuni di questi metodi sono espliciti e voluti, ad esempio la stringa user agent del browser, che spesso Identifica il browser, il sistema operativo e la versione in uso (e ciò contribuisce a distinguerti da me, se tu e utilizzo diversi browser). Alcuni metodi non sono stati intenzionalmente creati per essere impronte, ma finiscono per esserlo in ogni caso, ad esempio l'elenco dei caratteri o i dispositivi video e audio disponibili per il browser. (il browser non deve utilizzare questi dispositivi, ottieni un elenco per nome.) E alcune sono state stabilite per contribuire al miglioramento delle impronte dopo il rilascio, ad esempio il rendering in pixel esatto dell'antialiasing dei caratteri su un elemento canvas. Ce ne sono molti altri e ogni modo in cui il browser differisce dal mio aggiunge entropia e quindi contribuisce potenzialmente a una un modo per capire la differenza tra te e me e identificare una singola persona nel modo più univoco possibile su tutti i siti web. https://amiunique.org offre un lungo elenco (ma sicuramente non esaustivo) di potenziali contributi tramite fingerprint e l'elenco continua a crescere (perché esiste un forte interesse monetario nel riuscire a utilizzare le impronte digitali degli utenti, anche se non lo vuoi o magari non te lo aspetti).

Mancato supporto di alcune API potenti

La risposta dei fornitori di browser a tutti questi approcci al calcolo del fingerprint di un utente è trovare modi per ridurre la quantità di entropia disponibile da queste API. L'opzione più restrittiva è quella di non implementarle inizialmente. Questa operazione è stata eseguita da alcuni dei principali browser per diverse API hardware e dei dispositivi (ad esempio, NFC e accesso Bluetooth da app web lato client), con problemi di fingerprinting e privacy citati come motivi per cui non sono stati implementati. Questo, ovviamente può incidere sulle tue app e sui tuoi servizi: non puoi utilizzare un'API in un browser che non la implementa e questo può escludere completamente alcuni approcci hardware.

Il gateway delle autorizzazioni utente

Un secondo approccio adottato dai fornitori di browser consiste nel impedire l'accesso ad API o dati senza una qualche forma esplicita di autorizzazione dell'utente. Questo approccio viene spesso adottato anche per motivi di sicurezza: un sito web non dovrebbe essere in grado di scattare foto con la webcam senza la tua autorizzazione. Ma in questo caso, la privacy e la sicurezza possono avere interessi simili. L'identificazione della posizione di una persona è violazione della privacy di per sé, ovviamente, ma contribuisce anche all'unicità di un'impronta. Richiesta dell'autorizzazione la geolocalizzazione non riduce l'entropia extra che una località aggiunge all'unicità dell'impronta, ma in sostanza elimina l'utilizzo della geolocalizzazione per il fingerprinting, perché questa operazione non viene più eseguita in modo invisibile. L'intero punto il fingerprinting consiste nel distinguere surreptisamente gli utenti l'uno dall'altro. Se è tutto pronto per far sapere all'utente che se il cliente vuole identificarli, non sono necessarie tecniche di fingerprinting: con essa.

Aggiunta di imprevedibilità

Un terzo approccio adottato in alcuni casi consiste nel "fuzz" da parte dei fornitori di browser. le risposte delle API per renderle meno granulari e quindi meno identificabili. Questo è stato descritto come parte del meccanismo di risposta randomizzata nel modulo Dati come che si possono fare quando si raccolgono i dati degli utenti, per evitare di raccogliere inavvertitamente dati di identificazione. Fornitori di browser possono adottare questo approccio ai dati delle API resi disponibili anche alle app web e a terze parti. Un esempio è la API con tempi molto precisi utilizzati per misurare il rendimento delle pagine da window.performance.now(). Il browser conosce questi valori con un'accuratezza in microsecondi, ma i valori restituiti vengono deliberatamente ridotti di precisione arrotondandoli ai 20 microsecondi più vicini confine per evitare il loro utilizzo nel fingerprinting (e anche per la sicurezza per evitare attacchi temporali, bisogna ammettere). L'obiettivo è garantire che le API rimangano utili, ma per rendere le risposte meno identificabili: in sostanza, per fornire "immunità di gregge" effettuando il tuo dispositivo assomiglia di più a quello di chiunque altro piuttosto che essere peculiare. Safari presenta una versione semplificata della configurazione di sistema proprio per questo.

Applicare un budget per la privacy

Il budget per la privacy è una proposta che suggerisce ai browser di stimare le informazioni rivelate da ogni piattaforma di fingerprinting. Non è stato ancora implementato nei browser. L'obiettivo è consentire API potenti tutelando la privacy dell'utente. Scopri di più sulla proposta di budget per la privacy.

Utilizza un ambiente di test ampio

Tutti questi aspetti influiranno sul modo in cui crei app e servizi. In particolare, le risposte e gli approcci sono molto diversi tra browser e piattaforme in quest'area. Ciò significa che testare il lavoro in più ambienti diversi è fondamentale. Questo è, ovviamente, sempre importante, ma si può ragionevolmente supporre che il rendering HTML o CSS siano costanti per un un determinato motore di rendering, indipendentemente dal browser o dalla piattaforma in cui si trova il motore (quindi si potrebbe avere la tentazione di eseguire il test in un solo ad esempio un browser basato su blink. Questo non è assolutamente il caso dell'uso delle API, proprio perché i browser che condividono può differire notevolmente in termini di protezione della superficie API contro il fingerprinting.

Cosa fare

  • Controlla le tue analisi e il tuo pubblico per determinare l'insieme di browser a cui dovresti dare la priorità durante il test.
  • Un buon insieme di browser su cui eseguire il test è Firefox, Chrome, Edge, Safari su computer, Chrome e Samsung Internet su Android. e Safari su iOS. In questo modo potrai testare i tre principali motori di rendering (Gecko in Firefox, vari fork di Blink) in Chrome, Edge e Samsung Internet, nonché Webkit in Safari), nonché su piattaforme mobile e desktop.
  • Se il tuo sito può essere utilizzato anche su dispositivi meno comuni, come tablet, smartwatch o console per videogiochi, esegui il test anche su questi dispositivi. Alcune piattaforme hardware possono rimanere indietro rispetto a quelle per dispositivi mobili e computer desktop per quanto riguarda gli aggiornamenti del browser, il che significa che alcune API potrebbero non essere implementate o non sono disponibili nei browser di queste piattaforme.
  • Esegui il test con uno o più browser che spingano la privacy degli utenti. Includi versioni di pre-release e test imminenti dei tuoi browser più comuni dove puoi e se sono disponibili: l'anteprima della tecnologia di Safari; Canary di Chrome, canale beta di Firefox. Queste ti offrono le migliori possibilità di identificare i malfunzionamenti delle API e le modifiche che interessano i tuoi siti prima che queste modifiche si ripercuotano i tuoi utenti. Allo stesso modo, fai in modo che i tuoi utenti ambienti in mente con riferimento alle analisi che avete presentato. Se le tue La base utenti ha un numero elevato di smartphone Android meno recenti, assicurati di includerli nei tuoi test. La maggior parte delle persone non ha l'hardware veloce e le ultime release usate da un team di sviluppo.
  • Eseguire test sia con un profilo pulito che in modalità di navigazione in incognito/privata; è probabile che tu abbia già concesso le autorizzazioni richieste nel tuo profilo personale. Verifica cosa succede se neghi l'autorizzazione al sito per qualsiasi domanda.
  • Verifica in modo esplicito le tue pagine nella protezione anti-impronta di Firefox . In questo modo verranno mostrate le finestre di dialogo delle autorizzazioni se la pagina sta tentando di eseguire il fingerprinting oppure verranno restituiti dati fuzzed per alcune API. Questa funzionalità ti consente di verificare se le terze parti incluse nel tuo servizio utilizzano dati digitali o se il tuo servizio dipende in merito. Puoi quindi valutare se la fuzzing intenzionale rende più difficile fare ciò che ti serve. Valuta la possibilità di realizzare correzioni di conseguenza per ottenere i dati da un'altra fonte, farne a meno o utilizzare dati meno granulari.
  • Come discusso in precedenza nel modulo per le terze parti, è importante anche controllare il fornitore per capire se usano tecniche di fingerprinting. Il fingerprinting passivo è difficile da rilevare (e impossibile se una terza parte lo fa sul proprio server), ma la modalità di fingerprinting potrebbe segnalare alcune tecniche di fingerprinting, Anche la ricerca di utilizzi di navigator.userAgent o della creazione imprevista di oggetti <canvas> può rivelare alcuni approcci che meritano un'analisi più approfondita. È inoltre opportuno cercare gli usi del termine "corrispondenza probabilistica" nel marketing o materiale tecnico che descrive una terza parte; Ciò a volte può indicare l'utilizzo di tecniche di fingerprinting.

Strumenti di test tra browser

Testare il codice per motivi di privacy è difficile da automatizzare e le cose da cercare durante il test manuale sono descritte in precedenza. Ad esempio, cosa succede quando neghi l'autorizzazione al sito per qualsiasi API a cui tenta di accedere e come viene presentata all'utente? Un test automatico non può valutare se il sito agisce in modo da rafforzare la fiducia dell'utente o, al contrario, incitare l'utente a diffidare. o pensare che qualcosa sia nascosto.

Tuttavia, una volta che il sito è stato controllato, il test delle API per confermare che non abbia funzionato nelle versioni più recenti del browser (o in "beta" in arrivo e "anteprima" ) possono essere automatizzate e in gran parte dovrebbero far parte della suite di test esistente. Qualcosa da considerare con gli strumenti per i test automatici, quando si lavora con la copertura della superficie delle API, è che la maggior parte dei browser consente un certo controllo sulle API e sulle funzionalità disponibili. A tale scopo, Chrome utilizza le opzioni della riga di comando, come fa Firefox e avervi accesso nello strumento di test ti consentirà di eseguire determinati test con le API disattivate o attive. (Vedi, ad esempio, l'elenco delle plug-in per l'avvio del browser e il parametro "launch.args" di puppeteer per aggiungere flag del browser all'avvio).

Utilizza solo la stringa dello user agent per ottenere informazioni generiche

Facendo un altro esempio, i browser hanno inviato dall'inizio del web una descrizione di se stessi con ogni richiesta nel Intestazione User-Agent HTTP. Per quasi tutto il tempo, gli sviluppatori web hanno esortato a non utilizzare i contenuti dell'intestazione dello user agent pubblicare contenuti diversi su browser differenti e, per tutto questo tempo, gli sviluppatori web lo hanno fatto comunque, con una certa quantità di giustificazione in alcuni (ma non tutti) casi. Poiché i browser non vogliono essere selezionati per offrire un'esperienza non ottimale per i siti web, In questo modo, ogni browser si spaccia per un altro browser e la stringa dello user agent ha il seguente aspetto:

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.

Sostiene, tra le altre cose, di essere Mozilla/5.0, un browser che è stato rilasciato nello stesso momento in cui i primi astronauti è entrato a bordo della Stazione Spaziale Internazionale oltre due decenni fa. La stringa user agent è una ricca fonte di entropia per il fingerprinting, ovviamente e per mitigare tale improntabilità, i produttori dei browser hanno già bloccato l'intestazione dello user agent o stanno lavorando a questo scopo. Questo è un altro esempio di modifica dei dati forniti da un'API senza necessariamente rimuoverla completamente. Inviando un'intestazione dello user agent vuota, verranno interrotti innumerevoli siti web che presuppongono che sia presente. Quindi, in generale, cosa fanno i browser è la rimozione di alcuni dettagli e di mantenerli praticamente invariati da quel momento in poi. (Puoi vedere che questo accade in Safari, Chrome e Firefox. Questa protezione il fingerprinting dettagliato significa essenzialmente che non puoi più fare affidamento sull'accuratezza dell'intestazione dello user agent. Se stai A tal fine, è importante trovare origini dati alternative.

Precisiamo che i dati nello user agent non spariscono del tutto, ma sono disponibili a una granularità inferiore oppure a volte non è preciso perché potrebbe essere segnalato un numero meno recente ma invariato. Ad esempio, Firefox, Safari e Chrome (tutto in maiuscolo) il numero di versione di macOS segnalato a dieci (vedi Aggiornamento sulla riduzione delle stringhe dello user agent). per ulteriori discussioni). I dettagli esatti su come Chrome prevede di ridurre i dati nella stringa user agent sono disponibili in User-Agent Reduct ma, in breve, puoi aspettarti che il numero di versione del browser indicato contenga solo una versione principale (quindi il numero di versione sarà simile alla 123.0.0.0, anche se il browser è la versione 123.10.45.108), e la versione del sistema operativo sarà senza dettagli e limitarsi a una delle poche scelte immutabili. Quindi una versione immaginaria di Chrome 123.45.67.89 in esecuzione su un "Windows 20" indica il numero di versione:

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

Le informazioni principali necessarie (la versione del browser) sono ancora disponibili: si tratta di Chrome 123 su Windows. Ma la società controllata informazioni (l'architettura dei chip, la versione di Windows, la versione di Safari che sta imitando, la versione secondaria del browser) non saranno più disponibili dopo il blocco.

Confronta questo valore con uno "attuale" User agent di Chrome su un'altra piattaforma:

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

e possiamo vedere che le uniche differenze sono il numero di versione di Chrome (104) e l'identificatore della piattaforma.

Analogamente, la stringa dello user agent di Safari mostra una piattaforma e un numero di versione di Safari e fornisce anche una versione del sistema operativo su iOS, ma tutto il resto è bloccato. Quindi una versione di Safari immaginaria 1234.5.67 in esecuzione su un macOS 20 immaginario potrebbe dare al suo user agent come:

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,

su un iOS 20 immaginario, potrebbe essere:

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

Anche in questo caso, le informazioni principali (safari, su iOS o macOS) sono disponibili e iOS Safari fornisce comunque un numero di versione per iOS; ma molte delle informazioni accessorie che erano disponibili in passato sono state congelate. È importante sottolineare che questo include Safari che non è necessariamente disponibile.

Le modifiche allo user agent segnalato sono state ampiamente dibattute. Riepiloghi https://github.com/WICG/ua-client-hints#use-cases Summarises degli argomenti e delle ragioni del cambiamento e Rowan Merewood ha una presentazione con alcune strategie per abbandonare l'utilizzo dello user agent per la differenziazione, nel contesto della proposta UA Client Hints spiegata più avanti.

Fuzzing

Fuzzing è un termine derivato dalla pratica di sicurezza, in cui le API vengono chiamate con valori inaspettati nella speranza che siano in grado di gestirli valori inattesi in modo errato e compromettano la sicurezza. Gli sviluppatori web devono avere familiarità con il cross-site scripting (XSS), che comporta l'aggiunta di script dannosi a una pagina, spesso perché quest'ultima non esegue correttamente l'interpretazione letterale all'HTML inserito (quindi esegui una query di ricerca con il testo <script>). Gli sviluppatori di backend saranno a conoscenza dell'iniezione SQL, in cui le query del database che non convalidano correttamente l'input dell'utente espongono problemi di sicurezza (come illustrato in particolare da xkcd con Little Bobby Tables). Il fuzzing, o test di fuzz, è più corretto utilizzati per tentativi automatici di fornire molti input non validi o imprevisti a un'API e per controllare i risultati per verificare la presenza di fughe di dati nella sicurezza. o altri problemi di gestione. Questi sono tutti esempi di fornire deliberatamente informazioni imprecise. In questo caso, però, viene fatto preventivamente dai browser (rendendo lo user agent deliberatamente errato), per incoraggiare gli sviluppatori a smettere di fare affidamento su quei dati.

Cosa fare

  • Controlla se nel codebase dipende la stringa dello user agent (è probabile che la ricerca di navigator.userAgent registri la maggior parte delle occorrenze) nel codice lato client ed è probabile che il codice di backend cerchi User-Agent come intestazione), incluso il codice delle dipendenze.
  • Se individui gli utilizzi nel tuo codice, scopri cosa viene controllato dal codice e trova un altro modo per differenziarlo (o trovare una dipendenza sostitutiva o lavorare con la dipendenza a monte, segnalando i problemi o verificando la disponibilità di aggiornamenti). A volte la differenziazione del browser è necessaria per aggirare i bug, ma lo user agent diventerà sempre più difficile da usare una volta bloccato.
  • Potresti essere al sicuro. Se utilizzi solo i valori fondamentali del brand, della versione principale e della piattaforma, quasi certamente questi saranno ancora disponibili e che siano corrette nella stringa dello user agent.
  • MDN descrive metodi efficaci per evitare di fare affidamento sulla stringa user agent ("browser sniffing"). la principale è il rilevamento delle caratteristiche.
  • Se in qualche modo fai affidamento sulla stringa user agent (anche quando utilizzi i pochi valori principali che rimangono utili), da testare con gli user agent imminenti che saranno inclusi nelle nuove release del browser. È possibile eseguire il test con i browser in arrivo mediante build di anteprima beta o tecnologica, ma è anche possibile impostare una stringa user agent personalizzata test. Puoi sostituire la stringa dello user agent in Chrome, Edge, Firefox e Safari durante lo sviluppo locale, per verificare in che modo il codice gestisce i diversi valori dello user agent che potresti ricevere dagli utenti.

Client hint

Un'importante proposta per fornire queste informazioni sono i client hint dello user agent, anche se non è supportato da tutti i browser. I browser di supporto passeranno tre intestazioni: Sec-CH-UA, che fornisce una marca e un numero di versione del browser; Sec-CH-UA-Mobile, che indica se la richiesta proviene da un dispositivo mobile. e Sec-CH-UA-Platform, che dà un nome al sistema operativo. (L'analisi di queste intestazioni è meno facile di quanto sembri perché sono Intestazioni strutturate anziché semplici stringhe, e viene applicato dai browser che inviano messaggi "difficili" che, se non analizzati correttamente, verranno gestiti in modo errato. Ovvero, di quello precedente, un esempio di "fuzz test" eseguito preventivamente dal browser. Uno sviluppatore che utilizza questi dati deve gestire correttamente perché i dati sono progettati in modo che un'analisi non corretta o lazy darà probabilmente risultati negativi, come mostrare brand che non o stringhe che non si chiudono correttamente). Fortunatamente, questi dati vengono resi disponibili anche dal browser in JavaScript direttamente navigator.userAgentData, che in un browser di supporto potrebbe essere simile al seguente oggetto:

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