it-swarm-id.com

Bagaimana saya bisa mencegah pelacakan oleh ETAG?

ETAG adalah header HTTP yang dikirim di belakang layar antara browser web dan server web. Nilai ini dimaksudkan untuk mengontrol berapa lama file tertentu di-cache di sisi klien.

Ada efek samping yang menarik pada teknologi ini; ETAG disimpan di mesin bahkan jika cookie dihapus. Beberapa orang/perangkat lunak telah mengeksploitasi fakta ini untuk membuat "tindakan" ETAG seperti cookie.

Ini berarti bahwa menghapus cookie saja tidak cukup. Anda harus menghapus seluruh cache web juga. Itu adalah proses yang menyakitkan untuk dilalui setiap kali saya menjelajahi internet di mesin uji saya.

Pertanyaan

Apa cara paling andal untuk mencegah pelacakan yang terjadi oleh header ETAG?

31

Saya tidak tahu solusi hebat apa pun. Saya dapat menyarankan tiga kemungkinan pertahanan, meskipun semuanya memiliki keterbatasan:

  • Privoksi. Privoksi dapat memblokir header ETag.

    Secara khusus, Anda dapat menggunakan crunch-server-header atau server-header-filter dalam konfigurasi Privoxy Anda untuk memblokir ETag: header dari server. Anda juga dapat menggunakan crunch-client-header atau client-header-filter dalam konfigurasi Privoxy Anda untuk memblokir If-None-Match: dan If-Modified-Since: header dari klien. Namun, saya tidak tahu tentang formula apa pun yang dapat Anda ambil dan gunakan: Anda harus membuat sendiri konfigurasi Privoxy Anda sendiri.

  • Browser Anda. Jika Anda menggunakan Firefox, Anda dapat mengonfigurasi Firefox untuk menghapus cache Anda setiap kali Anda keluar dari browser. Ini mungkin buruk untuk kinerja. Selain itu, dengan pendekatan ini, ETag masih dapat digunakan untuk melacak Anda dalam satu sesi browser apa pun, sehingga tidak sempurna, tetapi harus menghapus cookie ETag apa pun saat Anda keluar dari browser.

  • RequestPolicy. Jika Anda menggunakan Firefox, Anda dapat menggunakan ekstensi RequestPolicy . Seorang penulis telah menunjukkan bahwa RequestPolicy dapat membantu mempertahankan terhadap pelacakan ETag . Seringkali, situs web melacak Anda dengan memasukkan sumber daya dari pengiklan pihak ketiga atau penyedia analisis. RequestPolicy memungkinkan Anda mengontrol sumber daya pihak ketiga apa yang browser Anda akan minta, ketika mengunjungi halaman web, dan dengan demikian dapat membuat Anda melindungi diri terhadap pelacakan semacam itu: jika browser Anda tidak pernah memuat sumber daya pengiklan pihak ketiga, maka pihak ketiga pengiklan tidak memiliki kesempatan untuk melacak Anda (menggunakan ETag atau mekanisme lainnya). Pertahanan ini kurang dari ideal, karena mengharuskan Anda untuk mengumpulkan kebijakan dengan susah payah, dan karena situs web masih dapat melacak Anda secara langsung jika mereka tidak bergantung pada sumber daya pihak ketiga.

Sayangnya, jika Anda mengakses web melalui proxy transparan, keberadaan proxy tersebut dapat mempersulit upaya Anda untuk tidak dilacak .

9
D.W.

Selain solusi yang lebih terlibat yang diusulkan oleh @ D.W., Anda dapat mempertimbangkan untuk menggunakan mode penelusuran pribadi peramban , ala InPrivate (IE), PrivateBrowsing (FF), Incognito (Chrome), dll.
Hal utama di sini adalah bahwa cache browser tidak digunakan (atau setidaknya, tidak digunakan di luar sesi privat). Karena itu, Etag tidak disimpan oleh browser Anda.

Masih ada beberapa kelemahan dari pendekatan ini, seperti pelacakan di dalam sesi, dan proksi sebagai @ D.W. tersebut. Yang mengatakan, sangat mudah digunakan.

5
AviD

Jika Anda menggunakan Firefox, Anda mungkin tertarik dengan fitur (opsional) dari add SecretAgent saya di ... yang membuat header ETag palsu untuk menekan pelacakan.

Kelemahannya adalah bahwa spoofing ETags jelas akan mengganggu caching di situs-situs yang menggunakan ETags untuk mengoptimalkan lalu lintas (meskipun ini tampaknya memiliki dampak yang sangat kecil pada kinerja).

Lihat www.secretagent.org.uk .

(Penafian: Saya adalah penulis SecretAgent).

2
pete

perbarui: tulis jawabannya secara berbeda dan lebih jelas

Saya punya solusi yang berfungsi tanpa mengubah protokol HTTP saat ini. Saya ingin melihat implementasi dari ini.

Alih-alih memberi tahu server Etag kami kami meminta server tentang Etag-nya , dan kami membandingkannya dengan yang sudah kami miliki.

Kode palsu:

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

Contoh percakapan HTTP dengan solusi 1:

Klien:

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

Kasus 1, Klien memiliki etag identik:

Connection closes, client loads page from cache.

Kasus 2, klien memiliki etag yang tidak cocok:

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

Sunting: Perlu dicatat bahwa ada overhead kecil, server harus mengirim header HTTP dua kali: Sekali menanggapi HEAD, dan sekali dalam menanggapi GET. Salah satu solusi teoretis untuk ini adalah memodifikasi protokol HTTP dan menambahkan metode baru yang meminta konten tanpa header. Maka klien akan meminta HEAD saja, dan kemudian isinya saja, jika etag tidak cocok.

Edit 2: Saya telah mengikuti saran pembuatofthings7 dan memposting ini sebagai pertanyaan tentang stackoverflow .

1
Hello World

Solusi di masa mendatang bisa berupa preferensi peramban yang menonaktifkan etag.

Untuk Mozilla masalah ini dibahas dalam: ETag: pemfilteran untuk melawan pelacakan web .

0
Changaco