it-swarm-tr.com

Web siteleri özel tarama modunu kullanıp kullanmadığınızı algılayabilir mi?

Çoğu modern tarayıcı " özel tarama modu " (Chrome "Gizli mod" olarak da bilinir), burada tarayıcının diskle ilgili herhangi bir bilgi kaydetmemesi bu moddayken göz atmanız gerekir.

Modern tarayıcılarda, bir web sitesi, web sitesini ziyaret eden bir kullanıcının özel tarama modunun etkin olup olmadığını algılayabilir mi?

Yaptığım arka plan araştırması. İşte bu soru ile ilgili neler bulabildim. Ne yazık ki, yukarıdaki soruya gerçekten cevap vermiyor.

  • A 2010 etüdü özel tarama modu, web sitelerinin bir CSS geçmişi koklama saldırısı kullanarak tarayıcının özel tarama modunda olup olmadığını saptamasının mümkün olduğunu gösterdi. (Özel tarama modunda, siteler geçmişe eklenmez, böylece ziyaretçinin özel tarama modunda olup olmadığını kontrol etmek için geçmiş kokusunu kullanabilirsiniz.) O zamandan beri, modern tarayıcılar defans = karşı CSS geçmişi koklama saldırıları.

    Sonuç olarak, tarayıcının özel tarama modunda olup olmadığını tespit etme yönteminin artık başarılı olmasını beklemem. (Tarih koklamasına karşı savunmanın mükemmel değil olduğunu, ancak bu amaçlar için yeterince iyi olabileceğini anlıyorum.)

  • Ziyaret ettiğiniz bir web sitesi için waysöğrenin şu anda başka sitelere giriş yapıp yapmadığınızı düşünebilirsiniz (düşünün: Facebook). Kullanıcı şu anda başka hizmetlerde (Facebook gibi) oturum açtıysa, bir web sitesi kullanıcının şu anda özel tarama modunu kullanmadığını tahmin edebilir - bu kesin bir şey değildir, ancak belki de bir çeşit olasılıksal çıkarım yapabilir. Ancak, kullanıcı diğer hizmetlere giriş yapmazsa, söyleyebileceğimiz tek şey, özel tarama modunun kullanılıp kullanılmadığını bilmediğimizdir. Sanırım bu, kısmi bir bilgi sızıntısı verebilir, ancak en iyi ihtimalle güvenilmez görünüyor - eğer çalışıyorsa bile. Bunun hiç işe yaramayabileceği de mümkündür.

Peki, herhangi bir web sitesinin ziyaretçilerinin özel tarama modunu kullanıp kullanmadığını test etmenin bir yolu olup olmadığı hakkında daha yeni bilgiler sağlayabilir mi?

64
D.W.

Özel taramayı güvenilir bir şekilde algılayabileceğinizden emin değilim, ancak bir kullanıcının iyi olduğunu tahmin etmek için bazı sezgisel tarama uygulayabileceğinizi düşünüyorum. çeşitli gizlilik artırıcı özellikler kullanarak. Soru hakkındaki yorumumda belirtildiği gibi, bunun yeterince iyi mi yoksa uygulamanıza uyup uymadığı, özel göz atma algılamaya tepki olarak ne yapmak istediğinize bağlıdır. Sonny Ordell'in de belirttiği gibi, özel taramayı çeşitli özelleştirme artırıcı özelliklerin (ör. Manuel olarak geçmişi veya çerezleri temizleme) geçici kullanımından ayırabileceğinizden de emin değilim.

Bir web uygulaması kullandığınızı ve kullanıcılarınızdan birinin (bir hesapla) özel göz atmaya ne zaman geçtiğini tespit etmek istediğinizi varsayalım. Kullanıcının bir hesabı olduğunu belirtiyorum, çünkü bu strateji çeşitli davranış verileri bitlerini izlemeye dayanıyor. Özel göz atmanın özellikleri şunlardır (en azından Firefox ): geçmiş, form/arama girişleri, şifreler, indirmeler, çerezler, önbellek, DOM depolama. İndirme işlemlerini nasıl inceleyeceğimi bilmiyorum, ancak diğerlerinin incelenebileceğini düşünüyorum. Hepsinde olumlu bir tespit alırsanız, kullanıcılarınızın gizli göz atma olasılığı daha yüksektir.

  • Önemsiz durumda, her kullanıcı için (IP, user-agent) Eşleşen bir (IP, UA) Kaydı için çerezsiz bir istek aldığınızda, ilgili kullanıcının özel olarak göz attığını belirtebilirsiniz. Aşağıdaki durumlarda bu yöntem başarısız olur (algılama yok):

    1. Özel tarama sırasında Tor'u etkinleştirmek için ProxySwitchy veya TorButton gibi bir şey kullanır, böylece IP'yi değiştirir.
    2. Farklı bir tarayıcıya geçer (örneğin genellikle FF kullanır ve Chrome) moduna geçer.
    3. Özel göz atmaya geçiş hemen gerçekleşmez ve İSS'si yeni bir IP yayınladı (örneğin, Cuma günü 10.1.2.3'tü, hafta sonu boyunca uygulamanızı kullanmadı ve Pazartesi günü 10.1.4.5).

    Sonny Ordell'in cevabı 'da belirtildiği gibi, başka bir kişi sitenizdeki ayrı bir hesaba erişmek için özel tarayıcı modunda aynı tarayıcıyı kullanıyorsa, bir algılama alırsınız - ancak bu biraz farklı bir durumdur "normal" kullanıcının özel tarama moduna geçmesinden daha kolaydır.

    Kullanıcı siteniz için çerezlerini temizler veya ikincil bir profil kullanırsa (örneğin, belirli testler ve/veya izlemeyi önlemek için farklı eklenti kümeleriyle birkaç farklı Firefox profili tutuyorum) sanırım bu çok nadirdir).

  • Daha karmaşık bir kontrol olarak, EFF'nin panopticlick gibi bir şey kullanabilir ve her kullanıcı için yalnızca UA yerine bir tarayıcı parmak izi (veya parmak izi koleksiyonu) kullanabilirsiniz. Bu, yukarıda belirtilen durum 2'de başarısız olur (örneğin, kullanıcı tanımlanabilir tarama için yalnızca FF kullanıyorsa ve Chrome)) Parmak izi, kullanıcı için daha genel Kullanıcı farklı oturumlarda javascript'i seçmeli olarak etkinleştirirse (örneğin geçici olarak izin verilen sitelere sahip NoScript) parmak izi değişecektir .

  • Tor çıkış düğümü yoluyla erişimi algılayıp bunu parmak izi ile birleştirerek 1. sorunu (Tor) yenebilirsiniz. Bu, yalnızca dar bir dizi durumda yardımcı olacak gibi görünüyor.

  • Yukarıdaki kontroller için çerezler yerine localStorage test edin. Genellikle etkinse ve anahtarınız bu ziyaret için depolama alanında değilse ve parmak izi eşleşiyorsa, bu muhtemelen özel göz atmadır. Açıkçası, kullanıcı normalde depolama alanı devre dışı bırakılmışsa, onu kullanamazsınız. Hata modları, çerezler için yukarıda açıklanan modlara benzer.

  • Bu fikri test etmedim veya geliştirmedim, ancak sanırım Cache-Control İle oyun oynayabilirsiniz. (Hızlı arama ortaya çıkıyor bunun orijinal bir fikir olmadığını - bu proje kavram kanıtı kodu gibi görünüyor.) Bu strateji başarısız kullanıcı paylaşılan bir önbellek proxy'sinden geçiyorsa - bu arada sayfa anonymizer.com'dan bahseder. Firefox en azından önbelleği özel tarama modunda kullanmaz. (Önbellek tabanlı izleme demosu için bkz. bu site . Bunu, yukarıda belirtilen UA/parmak izi ile birleştirebilirsiniz: önbellek izleyiciniz bunun ilk ziyaret olduğunu gösteriyorsa, kullanıcının özel tarama olduğunu tahmin edin. Kullanıcı önbelleğini temizlerse yanlış pozitif ile başarısız olur; daha iyi bir tahmin için diğer tekniklerle birleştirin.

  • Her kullanıcı için, tarayıcının belirli bir form öğesini otomatik olarak doldurup doldurmadığını tespit edebilir ve izleyebilirsiniz. Belirli bir kullanıcının bu form öğesinde otomatik doldurma özelliği almadığını tespit ederseniz, özel göz atma sonucunu çıkarabilirsiniz. Bu kırılgan - belki de kullanıcı "birincil" bilgisayarını kullanmıyor, ancak daha güvenilir bir tahmin için yukarıda belirtildiği gibi parmak izi ile birleştirebilirsiniz.

  • Yan kanal zamanlama saldırısı: her kullanıcının uygulamanızda oturum açması için gereken tipik süreyi tespit edin ve izleyin. Varyasyonlar olacak, ancak birisinin şifre otomatik doldurma kullanıp kullanmadığını doğru bir şekilde tahmin edebileceğinizi tahmin ediyorum. Bir kullanıcı normalde şifre otomatik doldurmayı (yani giriş sayfasından hızlı geçiş) kullanıyorsa ve ardından belirli bir ziyaret için (eşleşen bir parmak iziyle) otomatik doldurma kullanmıyorsa, özel göz atmayı önerebilirsiniz. Yine bu kırılgandır; daha iyi bir tahmin için diğer tekniklerle birleştirin. Ayrıca, belirli bir sayfa yükündeki ağ gecikmesini saptamak ve düzeltmek istersiniz (örneğin, kullanıcının belirli bir günde ağ yavaş olması ve yavaş bir giriş sayfası geçişi yalnızca gecikmedir ve otomatik doldurma eksikliği değildir). Kullanıcılarınızı biraz rahatsız etmek istiyorsanız ikinci bir veri noktası almak için biraz kötü olabilir ve kullanıcıyı otomatik olarak kapatabilirsiniz (onlara sahte bir hata mesajı verin, "lütfen tekrar deneyin").

  • Kullanıcının diğer hizmetlere (örneğin Facebook) giriş yaptığını tespit etmekle ilgili soruda belirttiğinizle birleştirin ve tahmininize daha fazla güvenebilirsiniz.

  • Gerçekten motive olduysanız , DNS ile oyun oynayabilir ve sayfa yükleme sürelerini izleyebilirsiniz. Hızlı bir FF 3.6 ve Chrome 15 testi, hiçbir tarayıcının özel tarama modunda DNS önbelleğini temizlemediğini gösterir ve tarayıcının yerel sistemin DNS önbelleği üzerinde kesinlikle hiçbir kontrolü yoktur. parmak izlemeye alternatif olarak (veya ek olarak) kullanıcı takibi yapmak için bir yan kanal DNS zamanlama saldırısı, daha güvenilir bir tahmin alabilirsiniz. DNS zamanlaması ile izleme ne kadar güvenilir emin değilim.

Özel tarama modunda "anonim" kullanıcıların algılanması çok daha zor olacaktır, çünkü "tipik" davranışları hakkında veri biriktirme fırsatınız olmadı. Ve özelliklerin çoğu yalnızca tarayıcı oturumunu sonlandırdıklarında devreye girdiği için, geri dönüp dönmeyeceklerini gerçekten bilmiyorsunuz.

Bununla birlikte, kötü olmaya hazırsanız ve bir kullanıcının sitenize ikinci bir şans vermek istediğini bildiğiniz bazı kaynaklarınız varsa, anonim kullanıcılar tarafından gizli göz atmayı tespit etmek için bir fikir var. javascript'i etkinleştirmek için kullanıcı. Parmak izini takip edin, kalıcı bir çerez ayarlayın, localStorage, önbellek - kullanıcıyı izlemek için ne yapabilirsiniz. Parmak izinize göre ilk ziyaretiniz varsa, tarayıcıyı javascript (veya flash veya bildiğiniz kötü hileler) aracılığıyla kilitleyin/asın. Kullanıcının tarayıcıyı kapatması için tonlarca belleği emin veya bir döngüye ya da ne gerekiyorsa takılı kalın. Sonra geri döndüklerinde, ikinci bir ziyaret olduğunu görürsünüz (parmak izinden). Çerez/depolama/önbellek/vb. Ayarlanmadıysa, ilk oturumun özel göz atma olduğunu çıkarabilir ve ikinci oturumun da muhtemelen özel göz atma olduğunu düşünebilirsiniz. Kullanıcı geri gelmezse veya tarayıcı penceresini öldürmeye ikna edemezseniz, bu açıkça başarısız olur. Bonus olarak, bunları özel bir URL'ye gönderirseniz ve özel modda değilse ve tarama oturumunu geri yüklerseniz, özel tarama modunda olmadıklarını tahmin edebilirsiniz (URL'ye yer işareti koymadıkları sürece).

Yukarıdaki her şey deliklerle dolu - yanlış pozitifler veya negatifler için bolca yer. Özel göz atma kullanıp kullanmadığımı veya bir VM kalıcı depolama olmadan bir tarayıcıda çalıştırıp çalıştırmadığımı) asla bilemezsiniz. (Fark nedir?)

En kötü yanı, muhtemelen özel göz atmayı tespit etmek için güvenilir bir yöntemle bir cevap alırsanız, çok uzun süre uygulanabilir kalmanın olası olmadığıdır. tarayıcılar ya "düzeltir" ya da kullanıcılar algılamayı önlemek için geçici çözümler bulur.

30
bstpierre

HTML 5 yerel depolama kontrolü, özel tarama modunu şimdi güvenilir bir şekilde tespit etmenizi sağlar (2019). Yazmaya ve sonra "Yerel Depolama" yı okumaya çalışarak çalışır.

görmek:

https://Gist.github.com/jherax/a81c8c132d09cc354a0e2cb911841ff1

veya

https://github.com/jLynx/PrivateWindowCheck ile PoC

  ------ edit to add functional description ----

Yukarıdaki jherax bağlantısından:

...
    // **Firefox**
    if ('MozAppearance' in document.documentElement.style) {
      if (indexedDB === null) return yes();
      const db = **indexedDB.open**('test');
      db.onerror = yes;
      db.onsuccess = not;
      return void 0;
---

Yukarıdaki jLynx'ten

...
        } else if(navigator.userAgent.includes("Firefox")){
            //Firefox
            var db = indexedDB.open("test");
            db.onerror = function(){resolve(true);};
            db.onsuccess =function(){resolve(false);};
---

Her iki örnekte de, Firefox için kalıcı yerel depolama alanı indexDB (HTML 5 ile tanımlanmıştır) özel tarama. Diğer tarayıcılar yerel depolamayı localStorage gibi farklı adlarla çağırır.

10
user10216038

Sezgisel olarak sağlam bir tahmin yapmak için kullanabilirsiniz. IE10 ve IE11'de (ve Safari, IIRC), örneğin, IndexedDB'yi tarayıcının InPrivate modu olduğuna dair güçlü bir ipucu olarak kullanmaya çalışırken atılan istisnalar.

Benzer şekilde, tarayıcı InPrivate/Incognito olduğunda Adobe'nin DRM sistemi (görünüşte HBOGO tarafından kullanılır), bir hata kodunu gösterir, çünkü gerekli "lisans yapılarının" özel modda oluşturulmasına izin verilmez. https://forums.Adobe.com/thread/1189199

8
EricLaw

Görüyorum ki bir ödül var, çünkü daha kesin ve güncel bir cevap istiyorsun, ama gerçek şu ki, doğru cevap zaten başkaları tarafından verildi. Bir JS geliştiricisi olmasam da, bu tür şeylerin nasıl çalıştığını hiç bilmediğim halde, size birkaç ayrıntı daha verebilirim.

Kısa yanıt şudur: JavaScript'i, çoğunlukla bazı işlevlerin kullanılabilir olup olmadığını kontrol eden bir tür buluşsal yöntem uygulamak için kullanırlar.

Örneğin bostonglobe.com Sayfasına bakın. Özel moddayken bir makaleyi tıkladığınızda şu bildirimi görürsünüz: "Özel moddasınız, vb.". JavaScript'i devre dışı bırakırsanız, bu bildirim görünmez, yani JS'de yapılır. Aynı şey New York Times'a giderseniz, bu sadece JS'dir. Ama bunu tam olarak nasıl yapıyorlar? bostonglobe.com 'Da kodu kaynağında meter.js Adlı bir JS dosyasında buldum. Bu kodda detectPrivateMode için arama yaparsanız, kullandığı işlevi görürsünüz. Minimize edildi, bu yüzden okumak bir acı. Ancak, kaynağı tarayıcının geliştirme araçlarında önizlemek aşağıdaki kodu verir:

detectPrivateMode: function (t) {
  var e;
  if (window.webkitRequestFileSystem) window.webkitRequestFileSystem(window.TEMPORARY, 1, function () {
    e = !1
  }, function (t) {
    console.log(t),
    e = !0
  });
   else if (window.indexedDB && /Firefox/.test(window.navigator.userAgent)) {
    var i;
    try {
      i = window.indexedDB.open('test')
    } catch (t) {
      e = !0
    }
    void 0 === e && n(function () {
      return 'done' === i.readyState
    }, function (t) {
      t || (e = !i.result)
    })
  } else if (r(window.navigator.userAgent)) {
    e = !1;
    try {
      window.indexedDB || (e = !0)
    } catch (t) {
      e = !0
    }
  } else if (window.localStorage && /Safari/.test(window.navigator.userAgent)) {
    if (window.safariIncognito) e = !0;
     else {
      try {
        window.openDatabase(null, null, null, null)
      } catch (t) {
        e = !0
      }
      try {
        window.localStorage.setItem('test', 1)
      } catch (t) {
        e = !0
      }
    }
    void 0 === e && (e = !1, window.localStorage.removeItem('test'))
  }
  n(function () {
    return void 0 !== e
  }, function (n) {
    t(e)
  })
}

Örneğin window.webkitRequestFileSystem Kullanmaya çalıştıklarını, Firefox'ta window.indexedDB.open('test'), Safary'de window.openDatabase Vb. Deneyeceklerini görebilirsiniz. Tüm bu işlevler, özel modda (gizli mod) farklı davrandıklarına güveniyor gibi görünüyor. Kodun çoğu, normal moddan farklı davranan yerel depolama ile ilgili işlevleri kullanıyor gibi görünüyor. Birkaç try-catch bloğu vardır, bu nedenle bu işlevlerin çoğu özel modda bile kullanılamaz. Bu işlevlerden herhangi birini google'da (aramada "özel" veya "gizli" olarak da eklerseniz), özel modu tespit etmenin olası yollarını tartışan birçok sonuç bulacaksınız ve sonunda bulacağınız kod görünecek alıntıladığımla çok benzer. StackExchange ile ilgili birkaç soru ve GitHub kod parçacıklarını bulacaksınız. Örneğin, StackExchange'teki bu yanıtın bazı ilginç bilgileri var: https://stackoverflow.com/a/4132218

New York Times'da bir makaleye tıklarsanız, HTML kaynağını açar ve webkitRequestFileSystem için arama yaparsanız benzer kodu bulacaksınız.

Gördüğünüz gibi, kullandıkları kod ve buluşsal yöntemler arasında bazı farklılıklar olabilir, ancak her web sitesi muhtemelen aynı küçük işlev kümesine güvenerek özel modu tespit ediyor.

6
reed

Görünüşe göre Özel Tarama modundayken web sitelerinin algılayabileceği bazı yollar vardır, masaüstü Safari ve mobil Safari için .

Desktop Safari, Özel Tarama modundayken bazı şeyleri bildiren favicons istemez. Ayrıca diğer farklılıklar vardır.

Mobil Safari, web siteleri tarafından da algılanabilen Özel Tarama modunda HTML5 yerel depolamasını desteklemez.

3
D.W.

Mart 2020 itibariyle, Firefox'un özel modda çalışırken IndexedDB işlevinin çalışmadığına bağlı olarak, sitelerin Firefox'un özel modda çalışıp çalışmadığını algılaması hala mümkün görünüyor. Kullanıcıların sitelerine özel modda göz atmalarını engellemek veya onları giriş yapmaya zorlamak için tekniği kullanıyor gibi görünen bir dizi ana akım medya çıkışı var.

Örnek kodlu GitHub Gist:
https://Gist.github.com/jherax/a81c8c132d09cc354a0e2cb911841ff1

Yukarıdaki kodun çalışma demosu:
https://output.jsbin.com/tazuwif

Daha fazla bilgi içeren Bugzilla konuları:
https://bugzilla.mozilla.org/show_bug.cgi?id=781982
https://bugzilla.mozilla.org/show_bug.cgi?id=150668

1
mti2935

Basit cevap hayır.

Geçmişin kaydedilmediğini tespit etmek, özel tarama modunun kullanıldığı anlamına gelmez, sadece geçmişin kaydedilmediği anlamına gelir, herhangi bir tarayıcıda yapılandırılması kolay bir şeydir.

Neden başka bir hizmette oturum açmak özel tarama modunu kullanmadığınız anlamına geliyor? Facebook'u diğer halk bilgisayarlarında özel tarama modunda sık sık kullanıyorum, çünkü onları kapatmak zorunda değilim ve durumlarını kaybetmeden kendi oturumumu yapmanın kolay bir yolu.

Özel tarama modu, normal modda kendiniz yapılandırabileceğiniz özellikleri etkinleştirir. Kolaylık sağlamak için aynı anda birden fazla özelliği aynı anda sağlar. Birisinin özel tarama modunu kullanıp kullanmadığını veya yalnızca bu özelliklerin etkin olup olmadığını anlamanın bir yolu yoktur.

0
Sonny Ordell