it-swarm-tr.com

ETAG'ler tarafından izlemeyi nasıl önleyebilirim?

ETAG, bir web tarayıcısı ile bir web sunucusu arasında sahne arkasına gönderilen bir HTTP üst bilgisidir. Bu değer, belirli bir dosyanın istemci tarafında ne kadar süreyle önbelleğe alınacağını kontrol etmeyi amaçlamaktadır.

Bu teknolojinin ilginç bir yan etkisi var; ETAG'ler, çerezler silinse bile bir makineye kaydedilir. Bazı insanlar/yazılımlar ETAG'ın bir çerez gibi "hareket etmesini" sağlamak için bu gerçeği kullandılar.

Bu, çerezleri silmenin yeterli olmadığı anlamına gelir. Bir de tüm web önbelleğini silmek zorunda. Test makinemde her sörf yaptığımda bu acı verici bir süreç.

Soru

ETAG üstbilgileri tarafından gerçekleşen izlemeyi önlemenin en güvenilir yolu nedir?

31

Harika bir çözüm bilmiyorum. Hepsinin sınırlamaları olmasına rağmen üç olası savunma önerebilirim:

  • Privoxy. Privoxy ETag başlıklarını engelleyebilir.

    Özellikle, crunch-server-header veya server-header-filter Privoxy yapılandırmanızda ETag: sunucudan başlıklar. Ayrıca, crunch-client-header veya client-header-filter Privoxy yapılandırmanızda If-None-Match: ve If-Modified-Since: istemciden başlıklar. Ancak, yakalayabileceğiniz ve kullanabileceğiniz herhangi bir hazır formül bilmiyorum: kendi Privoxy yapılandırmanızı kendiniz oluşturmanız gerekir.

  • Tarayıcınız. Firefox kullanıyorsanız, tarayıcıdan her çıktığınızda Firefox'u önbelleğinizi temizleyecek şekilde yapılandırabilirsiniz. Bu performans için kötü olabilir. Ayrıca, bu yaklaşımla, ETag'ler sizi herhangi bir tarayıcı oturumunda izlemek için kullanılabilir, bu yüzden mükemmel değildir, ancak tarayıcınızdan çıktığınızda herhangi bir ETag çerezini temizlemelidir.

  • RequestPolicy. Firefox kullanıyorsanız, RequestPolicy uzantısını kullanabilirsiniz. Bir yazar RequestPolicy'in ETag izlemesine karşı savunmaya yardımcı olabileceğine dikkat çekti . Web siteleri genellikle üçüncü taraf reklamverenlerin veya analiz sağlayıcılarının kaynaklarını ekleyerek sizi izler. RequestPolicy, bir web sayfasını ziyaret ederken tarayıcınızın hangi üçüncü taraf kaynaklarını isteyeceğini kontrol etmenizi sağlar ve böylece kendinizi bu tür bir izlemeye karşı korumanıza izin verir: tarayıcınız üçüncü taraf reklamverenin kaynağını asla yüklemezse, üçüncü taraf reklamverenin sizi izleme şansı yoktur (bir ETag veya başka bir mekanizma kullanarak). Bu savunma ideal olmaktan daha azdır, çünkü politikanızı zahmetli bir şekilde toplamanızı gerektirir ve web siteleri herhangi bir üçüncü taraf kaynağa güvenmiyorsa sizi doğrudan izleyebilir.

Ne yazık ki, web'e şeffaf bir proxy üzerinden erişirseniz, proxy'nin varlığı izlenmekten kaçınma girişimlerinizi zorlaştırabilir .

9
D.W.

@ D.W. Tarafından önerilen daha ilgili çözümlere ek olarak, tarayıcınızın özel tarama mod , ala InPrivate (IE), PrivateBrowsing (FF), Incognito (Chrome) vb.
Buradaki ana şey, tarayıcı önbelleğinin kullanılmaması (veya en azından özel oturum süresinin ötesinde kullanılmaması). Bu nedenle Etag tarayıcınız tarafından kaydedilmez.

Oturumda izleme ve @ D.W gibi proxy'ler gibi hala bu yaklaşımın bazı dezavantajları vardır. bahsettiniz. Bununla birlikte, kullanımı oldukça basittir.

5
AviD

Firefox kullanıyorsanız, SecretAgent eklentimin (isteğe bağlı) bir özelliği ile ilgilenebilirsiniz ... bu, izlemeyi bastırmak için sahte ETag başlıkları oluşturur.

Dezavantajı, kimlik sahtekarlığı ETag'lerin trafiği optimize etmek için ETag'ları kullanan sitelerde önbelleğe almayı açıkça engelleyeceği yönündedir (ancak bu, performans üzerinde çok küçük bir etkiye sahip gibi görünmektedir).

Bakınız www.secretagent.org.uk .

(Feragatname: Ben SecretAgent'ın yazarıyım).

2
pete

güncelleme: cevabı farklı ve daha açık bir şekilde yazdı

Geçerli HTTP protokolünü değiştirmeden çalışan bir çözüm var. Bunun bir uygulamasını görmek isterim.

Sunucuya Etag'ımızı anlatmak yerine, sunucuya Etag'i SORUZ ve zaten sahip olduğumuzla karşılaştırırız.

Sahte kod:

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

1. çözüm ile HTTP konuşma örneği:

Müşteri:

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

Sunucu:

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

Durum 1, Müşterinin özdeş bir etag'i var:

Connection closes, client loads page from cache.

Durum 2, istemcide uyumsuz bir etag var:

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

Düzenleme: Küçük bir ek yük olduğunu, sunucunun HTTP üstbilgisini iki kez göndermesi gerektiğini belirtmek gerekir: Bir kez HEAD'e yanıt olarak ve bir kez GET'e yanıt olarak. Bunun için teorik bir çözüm, HTTP protokolünü değiştirmek ve başlıksız içerik isteyen yeni bir yöntem eklemektir. Sonra istemci HEAD ve sonra yalnızca etags uyuşmazsa içeriği) ister.

Edit 2: makerofthings7'nin tavsiyelerini takip ettim ve bunu stackoverflow ile ilgili sor olarak gönderdim.

1
Hello World

Gelecekteki bir çözüm, etags'ı devre dışı bırakan bir tarayıcı tercihi olabilir.

Mozilla için sorun şu şekilde ele alınmaktadır: ETag: web izlemeye karşı filtreleme .

0
Changaco