Perché i browser inviano stringhe di questo tipo?

8

I moderni browser Web perdono una quantità ridicola di informazioni attraverso l'intestazione User-Agent . Di seguito è riportato un esempio per Safari su iPad, da Wikipedia :

Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us)
AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405

È chiaro che le informazioni fornite qui vanno ben oltre ciò che ha senso ai fini del targeting per browser / sistema operativo da parte di servizi Web legittimi. In effetti, l'unica cosa che questo livello di dettaglio sembra fare è facilitare il tracciamento e il fingerprinting del browser, e non sorprende che sia usato per questo in modo esteso.

Perché i produttori di browser consentono / supportano questo? Perché non è qualcosa come

Mozilla/5.0 (Safari 5.1; iOS/iPad; en-us)

abbastanza? Anche en-us non dovrebbe essere necessario poiché è duplicato dall'intestazione Accept-Language e se il server ha il diritto di sapere quale dispositivo sto usando è discutibile, lasciandoci con

Mozilla/5.0 (Safari 5.1; iOS)

che cattura ancora il browser e la versione del sistema operativo e dovrebbe quindi essere completamente sufficiente per tutti gli scopi legittimi.

    
posta user114974 20.06.2016 - 10:17
fonte

2 risposte

8

Le stringhe dell'agente utente sono misticamente complicate per ragioni storiche. È una lunga storia, ma la versione breve è che tutti volevano apparire come qualcun altro per aggirare i server limitando l'accesso alle pagine Web basate sui browser. Sì, quella era una cosa indietro nei giorni. E ora siamo bloccati da questo triste casino.

La buona notizia è che questo significa che anche se la stringa dell'agent user è lunga, molte informazioni non sono veramente utili. Se togliamo la piastra della caldaia, le informazioni su di te che possiamo effettivamente ottenere da questa stringa sono:

  • iPad : sei su un iPad.
  • CPU OS 3_2_1 like Mac OS X : stai utilizzando iOS con la versione specificata.
  • en-us : la tua lingua è impostata sull'inglese americano.
  • AppleWebKit/531.21.10 : stai utilizzando il motore WebKit, con quella versione specifica.
  • Mobile/7B405 : la versione del firmware.
  • Stai utilizzando Safari. Non lo dice mai esplicitamente, ma può essere dedotto dalla struttura della stringa.

Questa è una grande quantità di informazioni che potrebbero essere utili per le impronte digitali. Direi che è ancora una buona pratica:

  • Tutte queste informazioni potrebbero anche essere utili per determinare quale versione di un sito pubblicare. Ad esempio, se c'è un bug noto in una determinata versione di WebKit, potresti voler includere alcuni CSS con una soluzione alternativa. Ci sono usi legittimi per questo.
  • Se mantieni aggiornato il tuo software, il tuo agente utente sarà praticamente unico in ogni caso.
  • Ci sono solo molti modi per imprimere le impronte digitali a un browser perché ci sia un punto in cui rimuovere informazioni utili per prevenirlo. Guarda Panopticlick o evercookie .

Il mio punto principale è che chiedere ai produttori di browser di rimuovere funzionalità non risolverà il problema sottostante. Se si desidera rimanere non rintracciabile, è necessario utilizzare un browser appositamente progettato per tale scopo. Ciò comporterà la perdita di molte funzionalità legittime (ad esempio la possibilità di ridefinire la finestra del browser).

Se sei preoccupato solo per l'intestazione user-agent, ci sono plugin che possono cambiarlo o persino renderlo casuale per te. Ma se sei preoccupato di essere rintracciato sul web, probabilmente dovresti preoccuparti di molto di più.

    
risposta data 20.06.2016 - 11:31
fonte
0

Per prima cosa è importante capire l'idea che gli user-agent non siano mai stati concepiti per la stampa digitale. Ma per ottenere informazioni su browser, piattaforma, motore di rendering e altre informazioni sul dispositivo per aiutare gli sviluppatori.

Gli agenti utente sono stati aggiunti per la prima volta allo standard HTTP nel 1996 . Al momento gli standard del browser erano generalmente il selvaggio west. Molto raramente due browser hanno reso completamente lo stesso. A volte lo stesso browser funzionerebbe completamente diverso per piattaforma. E anche due versioni diverse dello stesso browser potrebbero funzionare in modo completamente diverso. Di conseguenza era normale disporre di più versioni della stessa pagina che fossero adattate per un particolare browser o una gamma di browser. E l'user-agent era l'unico modo per ottenere questi dettagli su quale pagina servire.

Oggi lo sniffing degli user-agent per la creazione di contenuti è scoraggiato per lo sviluppo moderno. Invece uno sviluppatore dovrebbe rilevare e adattare utilizzando il rilevamento delle funzionalità . Tuttavia, anche se questo è un modo migliore e più preferito, non aspettatevi che venga rimosso dai browser in qualsiasi momento. A causa del suo ampio utilizzo, sarebbe un cambiamento radicale. E c'è anche qualcosa chiamata non rilevabile . Il significato della funzione non può essere rilevato e l'utente-agente potrebbe essere l'ultima misura per rilevare la sua usabilità o fornire un mezzo alternativo. Oppure c'è un bug noto di un browser / renderizzatore particolare e desideri rilevarne la possibilità tramite l'user-agent.

Inoltre, per motivi di sicurezza, il browser in genere utilizza i siti Web di sandbox per accedere a qualsiasi informazione dettagliata dalla macchina. L'utente-agente è uno dei pochi posti in cui un browser può fare volontariato e rinunciare a queste informazioni altrimenti introvabili. Quindi è spesso descrittivo perché non ci sono mezzi alternativi per tirarlo. Considerando che il tocco, le dimensioni dello schermo, ecc. Possono essere fatti tramite il rilevamento delle caratteristiche, il che rende superfluo includere.

L'intera idea e l'utilizzo delle stringhe user-agent utilizzate per la stampa digitale sono un effetto collaterale della sua disponibilità. Ma non è mai stato lo scopo o le specifiche per questa funzione.

    
risposta data 21.06.2016 - 22:39
fonte

Leggi altre domande sui tag