¿Cómo puedo evitar el seguimiento por parte de los ETAG?

30

Un ETAG es un encabezado HTTP que se envía entre bastidores entre un navegador web y un servidor web. Este valor está destinado a controlar cuánto tiempo se almacena en caché un archivo en particular en el lado del cliente.

Esta tecnología tiene un efecto secundario interesante; Los ETAG se guardan en una máquina incluso si se eliminan las cookies. Algunas personas / software han explotado este hecho para hacer que un ETAG "actúe" como una cookie.

Esto significa que simplemente eliminar las cookies no es suficiente. Uno tiene que eliminar todo el caché web también. Es un proceso doloroso que atraviesa cada vez que navego por la red en mi máquina de prueba.

Pregunta

¿Cuál es la forma más confiable de prevenir el seguimiento que se produce por los encabezados ETAG?

    
pregunta random65537 14.03.2012 - 00:42
fuente

6 respuestas

9

No sé de ninguna gran solución. Puedo sugerir tres posibles defensas, aunque todas tienen limitaciones:

  • Privoxy. Privoxy puede bloquear los encabezados de ETag.

    En particular, puede usar crunch-server-header o < a href="http://www.privoxy.org/user-manual/actions-file.html#SERVER-HEADER-FILTER"> server-header-filter en su configuración de Privoxy para bloquear los encabezados ETag: del servidor. Además, puede usar crunch-client-header o client-header-filter en su configuración Privoxy para bloquear los encabezados If-None-Match: y If-Modified-Since: del cliente. Sin embargo, no conozco ninguna fórmula lista para usar que pueda tomar y usar: tendría que crear su propia configuración de Privoxy usted mismo.

  • Su navegador. Si usa Firefox, puede configurar Firefox para borrar su caché cada vez que salga del navegador. Esto puede ser malo para el rendimiento. Además, con este enfoque, las ETags pueden seguir utilizándose para rastrearte en cualquier sesión del navegador, por lo que no es perfecta, pero debería eliminar cualquier cookie de ETag cuando salgas de tu navegador.

  • RequestPolicy. Si usa Firefox, puede usar la extensión RequestPolicy . Un escritor ha señalado que RequestPolicy puede ayudar a defenderse contra el seguimiento de ETag . A menudo, los sitios web lo rastrean al incluir recursos de terceros anunciantes o proveedores de análisis. RequestPolicy le permite controlar qué recursos de terceros solicitará su navegador cuando visite una página web y, por lo tanto, le permitirá protegerse contra ese tipo de seguimiento: si su navegador nunca carga el recurso del anunciante, entonces el tercero el anunciante no tiene la oportunidad de rastrearlo (mediante un ETag o cualquier otro mecanismo). Esta defensa es menos que ideal, porque requiere que usted arme su política laboriosamente y porque los sitios web aún pueden rastrearlo directamente si no dependen de recursos de terceros.

Lamentablemente, si accede a la web a través de un proxy transparente, la presencia del proxy puede complica tus intentos de evitar ser rastreados .

    
respondido por el D.W. 14.03.2012 - 02:08
fuente
5

Además de las soluciones más complejas propuestas por @DW, puede considerar el uso del modo de navegación privada del navegador , ala InPrivate (IE), PrivateBrowsing (FF), Incognito (Chrome), etc.
Lo principal aquí es que el caché del navegador no se usa (o al menos, no se usa más allá de la duración de la sesión privada). Como tal, el Etag no es guardado por su navegador.

Este enfoque aún presenta algunos inconvenientes, como el seguimiento dentro de la sesión y los proxies como @D.W. mencionado Dicho esto, es bastante simple de usar.

    
respondido por el AviD 14.03.2012 - 17:44
fuente
2

Si está usando Firefox, podría estar interesado en una característica (opcional) de mi complemento SecretAgent en ... que crea encabezados ETag falsificados para suprimir el seguimiento.

La desventaja es que la falsificación de ETags obviamente afectará el almacenamiento en caché en aquellos sitios que usan ETags para optimizar el tráfico (aunque esto parece tener un impacto muy pequeño en el rendimiento).

Consulte www.secretagent.org.uk .

(Descargo de responsabilidad: Soy el autor de SecretAgent).

    
respondido por el pete 12.04.2013 - 13:39
fuente
1

actualización: escribió la respuesta de manera diferente y más clara

Tengo una solución que funciona sin modificar el protocolo HTTP actual. Me encantaría ver una implementación de esto.

En lugar de decirle al servidor nuestro Etag le preguntamos al servidor por su Etag , y lo comparamos con el que ya tenemos.

Pseudo código:

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();
    }
}

Ejemplo de conversación HTTP con solución 1:

Cliente:

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

Servidor:

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, el cliente tiene un etag idéntico:

Connection closes, client loads page from cache.

Caso 2, el cliente tiene una etiqueta no coincidente:

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

Editar: Vale la pena señalar que hay una pequeña sobrecarga, el servidor tiene que enviar el encabezado HTTP dos veces: una vez en respuesta a HEAD y una vez en respuesta a GET. Una solución teórica para esto es modificar el protocolo HTTP y agregar un nuevo método que solicite contenido sin encabezado. Luego, el cliente solo solicitará la CABEZA, y luego el contenido, si las discrepancias etags no coinciden.

Edición 2: He seguido el consejo de makerofthings7 y publiqué esto como una pregunta sobre stackoverflow .

    
respondido por el Hello World 02.12.2013 - 18:20
fuente
0

Algunos detalles técnicos y una demostración del concepto de seguimiento de ETag: enlace

    
respondido por el Csaba Okrona 21.08.2013 - 14:03
fuente
0

Una solución futura podría ser una preferencia de navegador que deshabilita etags.

Para Mozilla, el problema se trata en: ETag: filtrado para contrarrestar el seguimiento web .

    
respondido por el Changaco 16.01.2014 - 19:49
fuente

Lea otras preguntas en las etiquetas