Come posso impedire il tracciamento da parte degli ETAG?

30

Un ETAG è un'intestazione HTTP che viene inviata dietro le quinte tra un browser Web e un server web. Questo valore ha lo scopo di controllare per quanto tempo un determinato file viene memorizzato nella cache sul lato client.

C'è un interessante effetto collaterale su questa tecnologia; Gli ETAG vengono salvati su una macchina anche se i cookie vengono cancellati. Alcune persone / software hanno sfruttato questo fatto per fare un "atto" ETAG come un cookie.

Ciò significa che semplicemente eliminare i cookie non è sufficiente. Si deve cancellare anche l'intera cache web. È un processo doloroso da percorrere ogni volta che navigo in rete sulla mia macchina di prova.

Domanda

Qual è il modo più affidabile per prevenire il tracciamento che si verifica dagli header ETAG?

    
posta random65537 14.03.2012 - 00:42
fonte

6 risposte

9

Non conosco nessuna grande soluzione. Posso suggerire tre possibili difese, anche se tutte hanno limitazioni:

  • Privoxy. Privoxy può bloccare le intestazioni di ETag.

    In particolare, puoi utilizzare crunch-server-header o < a href="http://www.privoxy.org/user-manual/actions-file.html#SERVER-HEADER-FILTER"> server-header-filter nella configurazione di Privoxy per bloccare ETag: di intestazioni dal server. Inoltre, puoi utilizzare crunch-client-header o client-header-filter nella configurazione di Privoxy per bloccare If-None-Match: e If-Modified-Since: di intestazioni dal cliente. Tuttavia, non conosco alcuna formula pronta all'uso che puoi semplicemente utilizzare e utilizzare: dovresti creare da solo la tua configurazione Privoxy.

  • Il tuo browser. Se utilizzi Firefox, puoi configurare Firefox per svuotare la cache ogni volta che esci dal browser. Questo potrebbe essere negativo per le prestazioni. Inoltre, con questo approccio, ETags può ancora essere usato per tracciarti all'interno di una qualsiasi sessione del browser, quindi non è perfetto, ma dovrebbe cancellare tutti i cookie ETag quando esci dal browser.

  • RequestPolicy. Se utilizzi Firefox, puoi utilizzare l'estensione RequestPolicy . Uno scrittore ha sottolineato che RequestPolicy può aiutare a difendere contro il tracciamento ETag . Spesso, i siti Web ti seguono includendo risorse di inserzionisti di terze parti o fornitori di analisi. RequestPolicy ti consente di controllare quali risorse di terze parti verranno richieste dal tuo browser, quando visiti una pagina web, e quindi di proteggerti da quel tipo di monitoraggio: se il tuo browser non carica mai la risorsa dell'inserzionista di terze parti, allora la terza parte l'inserzionista non ha la possibilità di rintracciarti (usando un ETag o qualsiasi altro meccanismo). Questa difesa non è l'ideale, perché richiede di assemblare laboriosamente la tua politica e perché i siti web possono ancora tracciarti direttamente se non si affidano a risorse di terze parti.

Sfortunatamente, se accedi al web tramite un proxy trasparente, la presenza del proxy potrebbe complica i tuoi tentativi di evitare di essere monitorato .

    
risposta data 14.03.2012 - 02:08
fonte
5

Oltre alle soluzioni più coinvolte proposte da @DW, puoi considerare l'utilizzo della modalità di navigazione privata del browser , ala InPrivate (IE), PrivateBrowsing (FF), Incognito (Chrome), ecc La cosa principale qui è che la cache del browser non viene utilizzata (o almeno non è utilizzata oltre la durata della sessione privata). In quanto tale, Etag non viene salvato dal browser.

Ci sono ancora alcuni inconvenienti a questo approccio, come il tracciamento all'interno della sessione e i proxy come @ D.W. menzionato. Detto questo, è piuttosto semplice da usare.

    
risposta data 14.03.2012 - 17:44
fonte
2

Se stai usando Firefox, potresti essere interessato a una funzione (opzionale) del mio add-on SecretAgent ... che crea spoofing di intestazioni ETag per sopprimere il tracciamento.

Il rovescio della medaglia è che lo spoofing degli ETags ovviamente comprometterà il caching su quei siti che usano ETags per ottimizzare il traffico (anche se questo sembra avere un impatto molto minore sulle prestazioni).

Vedi www.secretagent.org.uk .

(Disclaimer: io sono l'autore di SecretAgent).

    
risposta data 12.04.2013 - 13:39
fonte
1

aggiornamento: ha scritto la risposta in modo diverso e più chiaro

Ho una soluzione che funziona senza modificare il protocollo HTTP corrente. Mi piacerebbe vedere una implementazione di questo.

Invece di dire al server il nostro Etag CHIEDIAMO al server del suo Etag e lo confrontiamo con quello che abbiamo già.

Pseudo codice:

If (file_not_in_cache)
{
    page=http_get_request();     
    page.display();
    page.put_in_cache();
}
else
{
    page=load_from_cache();
    client_etag=page.extract_etag();
    server_etag=http_HEAD_request().extract_etag();

    //Instead of saying "my etag is xyz",
    //the client says: what is YOUR etag, server?"

    if (server_etag==client_etag)
    {
        page.display();
    }
    else
    {
        page.remove_from_cache();
        page=http_get_request();     
        page.display();
        page.put_in_cache();
    }
}

Esempio di conversazione HTTP con soluzione 1:

Cliente:

HEAD /posts/46328
host: security.stackexchange.com

Server:

HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
ETag: "ABCDE"
Content-Type: text/html
Content-Length: 131

Caso 1, il client ha un etag identico:

Connection closes, client loads page from cache.

Caso 2, il client ha un etag di corrispondenza errata:

GET...... //and a normal http conversation begins.

Modifica: Vale la pena notare che c'è un sovraccarico minore, il server deve inviare l'intestazione HTTP due volte: una volta in risposta all'HEAD e una volta in risposta al GET. Una soluzione teorica per questo è la modifica del protocollo HTTP e l'aggiunta di un nuovo metodo che richiede il contenuto senza intestazione. Quindi il client richiede solo l'HEAD e quindi solo il contenuto, se gli etags non corrispondono.

Modifica 2: ho seguito il consiglio di makerofthings7 e l'ho postato come una domanda sullo stackoverflow .

    
risposta data 02.12.2013 - 18:20
fonte
0

Alcuni dettagli tecnici e una prova dimostrativa del tracciamento ETag: link

    
risposta data 21.08.2013 - 14:03
fonte
0

Una soluzione futura potrebbe essere una preferenza del browser che disabilita gli etags.

Per Mozilla il problema è discusso in: ETag: filtraggio per contrastare il monitoraggio web .

    
risposta data 16.01.2014 - 19:49
fonte

Leggi altre domande sui tag