Çerçeve Buster Buster… buster kodu gerekli


422

Diyelim ki diğer sitelerin sitenizi şu şekilde "çerçevelemesini" istemiyorsanız <iframe>:

<iframe src="http://example.org"></iframe>

Böylece tüm sayfalarınıza çerçeveleme önleyici, çerçeve bozucu JavaScript eklersiniz:

/* break us out of any containing iframes */
if (top != self) { top.location.replace(self.location.href); }

Mükemmel! Şimdi otomatik olarak "ifşa" veya içeren herhangi bir iframe kırmak. Küçük bir sorun hariç.

Sonradan anlaşıldı ki, sizin çerçeve bozma kod baskın olabilir , burada gösterildiği gibi :

<script type="text/javascript">
    var prevent_bust = 0  
    window.onbeforeunload = function() { prevent_bust++ }  
    setInterval(function() {  
      if (prevent_bust > 0) {  
        prevent_bust -= 2  
        window.top.location = 'http://example.org/page-which-responds-with-204'  
      }  
    }, 1)  
</script>

Bu kod aşağıdakileri yapar:

  • tarayıcı, window.onbeforeunloadolay işleyici aracılığıyla geçerli sayfadan her uzaklaşmaya çalıştığında bir sayacı artırır
  • her milisaniyede bir ateşleyen bir zamanlayıcı kurar setInterval()ve sayacın arttığını görürse, geçerli konumu saldırganın denetimindeki bir sunucu olarak değiştirir
  • söz konusu sunucu , tarayıcının herhangi bir yere gitmesine neden olmayan HTTP durum kodu 204 ile bir sayfa sunar

Benim sorum - ve bu gerçek bir problemden daha çok bir JavaScript bulmacasıdır - çerçeve bozucu uçağı nasıl yenebilirsin?

Birkaç düşüncem vardı, ama testimde hiçbir şey işe yaramadı:

  • onbeforeunloadolayı yoluyla temizlemeye çalışmanın onbeforeunload = nullhiçbir etkisi olmadı
  • alert()işlemi durdurarak ekleme , kullanıcının gerçekleşmekte olduğunu bildirir, ancak hiçbir şekilde kodu etkilemez; Tamam'ı tıklatmak, avın normal şekilde devam etmesini sağlar
  • setInterval()Zamanlayıcıyı temizlemenin hiçbir yolunu düşünemiyorum

Çok fazla JavaScript programcısı değilim, işte size meydan okuyorum: hey buster, çerçeve bozucu buster'ı kırabilir misiniz?


6
Çerçeve-buster-buster'ın gerçekten çalıştığından emin değilim ... test etmeye çalıştığımda (204'ü döndürmek için ayarladığım bir işleyiciye yönlendirme), sayfanın dışında herhangi bir yere gitmemi engelliyor - yazı yazmak da dahil adres çubuğunda! Herhangi bir yere ulaşmak için tarayıcı sekmesini kapatıp yeni bir tane açmam gerekiyor. Başka bir deyişle, bunun bir çözüme ihtiyacı olduğundan emin değilim, çünkü yakalanmak isteyen çerçeve-buster-buster ... başlamak için yakalandı. :) (Ya o ya da ben asla olmayacak olan testimi berbat ettim ...);)
Matt Winckler

16
Matt, yukarıda yayınlanan çerçeve-buster-buster kodu kesinlikle işe yarıyor. A .. uh .. arkadaşım .. bana .. anlattı .. hakkında. Ya da başka birşey. :)
Jeff Atwood

10
Jeff, her iki pencerede de aynı alanda test mi yapıyorsun? Görünüşe göre, eğer değilseniz, güvenlik kısıtlamaları 'onBeforeUnload'u değiştirmenizi engelleyecektir
James

29
Yan not: Örnek gönderirken, lütfen example.orgRFC 2606'da
Christoph

3
Karşı-karşı önlemlerin genel teması hakkında: galactanet.com/comic/view.php?strip=209
Joey

Yanıtlar:


149

Bunun uygulanabilir olup olmadığından emin değilim - ancak çerçeveyi kıramazsanız, neden sadece bir uyarı göstermiyorsunuz? Örneğin, sayfanız "üst sayfa" değilse kareyi kırmaya çalışan bir setInterval yöntemi oluşturun. 3 veya 4 denemeden sonra sayfanız hala üst sayfa değilse - tüm sayfayı (kalıcı kutu) bir mesaj ve benzer bir bağlantıyla kapsayan bir div öğesi oluşturun ...

Bu sayfayı yetkisiz bir çerçeve penceresinde görüntülüyorsunuz - (Blah blah ... potansiyel güvenlik sorunu)

bu sorunu gidermek için bu bağlantıyı tıklayın

En iyisi değil, ama bundan çıkış yollarını yazabilecekleri hiçbir yol göremiyorum.


2
Bunu denedim ve işe yarıyor. Bu çözümle ilgili sevdiğim bir diğer parça, içeriğinize gitmeden önce kullanıcıya ne tür bir site olduğunu aydınlatmasıdır. Örnek Kod: if (parent.frames.length> 0) {top.location.replace (document.location); setTimeout (function () {if (parent.frames.length> 0) {document.location = " google.com ";}}, 10); }
Papa,

Bu sadece kötüye kullanımdan kaçınmanın iyi bir yolu değil, sitenizi sadece bir göz atmak için iframe yapmak isteyen siteler için oldukça dostudur, ancak kullanımına izin vermemekle birlikte. İdeal olarak, sitenin ana sayfasının ekran görüntüsünün kullanılması gerektiğini düşünüyorum, üstte yer alan iframe'de neden kullanılamadığına dair bazı açıklamalar.
wheresrhys

33
Facebook bunu böyle yapıyor.
shamittomar

2
ama belki de bu, avlanma sitesi sahte bir anti-anti-anti yaratacaksa istismar edilebilir ... (şu ana kadar ne kadar anti olduğumuzu bilmiyorum) kendisi için bir kimlik avı bağlantısı veya başka bir şey sunan lighbox div ... tbc
yunzen

7
Başka bir fikir, sadece sayfayı tamamen gibi bir şeyle document.write("");silmek olacaktır (çerçevelendiğini belirledikten sonra
gabeio

211

6
mükemmel, tarayıcıda bunu destekleyen .exe şüphesiz gitmek için bir yoldur. "Çoğu tarayıcı" dediğinizde, hangileri özellikle? IE8 dışında hiçbir şey için iyi kaynaklar bulamıyorum.
Jeff Atwood

2
İşte bir test sayfası: improveie.com/test/clickjack . Chrome 4.1.249.1042 destekler. Opera 10.50 destekler. Firefox 3.6.2 henüz desteklemiyor. Safari 4.0.3 destekler.
EricLaw

1
Firefox 3.6.9 bunu yerel olarak destekleyecektir ( hackademix.net/2010/08/31/… ) ve NoScript ile herhangi bir Firefox yüklemesi 2009'un başından beri kullanmıştır ( hackademix.net/2009/01/29/x-frame- options-in-firefox )
ssokolow

4
Bunu javascript framebuster ile birleştirmek en iyisidir.
Jesse Weigert

1
Veya bunu bu sayfadaki Aralık '12 cevabı ile birleştirin: stackoverflow.com/a/13708510/328397
goodguys_activate

34

Web sitelerimizden birinde http://seclab.stanford.edu/websec/framebusting/framebust.pdf adresinden aşağıdaki yaklaşımı kullandık

<style>
 body { 
 display : none   
}
</style>
<script>
if(self == top) {
document.getElementsByTagName("body")[0].style.display = 'block';
}
else{
top.location = self.location;
}
</script>

3
Bingo! En iyi cevap olduğu için neden daha fazla oy verilmediğinden emin değilim (X-Frame-Options cevabının yanında, ancak ikisini birleştirmek en iyisidir)
Jesse Weigert

1
Bu cevap veya benim seçilmelidir :)

Hem bunu hem de X-Frame-Options'ı kullanma fikrinizi seviyorum: Cevabı reddet.
Max West

Bu, oldukça büyük bir yük IMHO olan JS'yi gerektirir.
Navin

1
+1 - X-FRAME-OPTIONS kullanılamadığında en iyi yanıt budur. (Örneğin, yönlendirene bağlı olarak koşullu olarak izin vermeniz veya reddetmeniz gerektiğinde.)
Jay Sullivan

29

Bu kadar geldi ve en azından Firefox ve Opera tarayıcısında çalışıyor gibi görünüyor.

if(top != self) {
 top.onbeforeunload = function() {};
 top.location.replace(self.location.href);
}

2
hem Jani hem de Jeff'in çözümü (bir kez düzenlendiğinde) doğrudur ve eşdeğer çalışır; Jani'yi kabul etti çünkü çözümü herhangi bir düzenleme yapmadan çalıştı
Jeff Atwood

29
Bu, yalnızca iki pencere aynı etki alanındaysa çalışır; bir çerçeveden kaçmak istediğinizde nadir bir durumdur.
James

İç içe yerleştirilmiş çerçeveler varsa onbeforeunload, yalnızca üstteki çerçeveyi değil , çerçeve zincirini yürümek ve tüm işleyicileri çıkarmak zorundasınız !
Christoph

12
önemli açıklama: bu benim için çalıştı çünkü iframe src = dinamik olarak ayarlandı ve bu nedenle alanlar arası politika geçerli değildi. JP kesinlikle doğru, statik bir src = bu işe yaramaz.
Jeff Atwood

5
tamam şimdi birisi bir çerçeve buster buster buster buster ile gelebilir?
Epaga

23

İframe için korumalı alanı tanıtan geçerli HTML5 standardı göz önüne alındığında, saldırgan korumalı alan kullandığında bu sayfada sağlanan tüm çerçeve bozma kodları iframe'in aşağıdakileri kısıtlaması nedeniyle devre dışı bırakılabilir:

allow-forms: Allow form submissions.
allow-popups: Allow opening popup windows.
allow-pointer-lock: Allow access to pointer movement and pointer lock.
allow-same-origin: Allow access to DOM objects when the iframe loaded form same origin
allow-scripts: Allow executing scripts inside iframe
allow-top-navigation: Allow navigation to top level window

Lütfen bakınız: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox

Şimdi, saldırganın sitenizi iframe'de barındırmak için aşağıdaki kodu kullandığını düşünün:

<iframe src="URI" sandbox></iframe>

Ardından, tüm JavaScript çerçeve yakalama kodu başarısız olur.

Tüm çerçeve buse kodlarını kontrol ettikten sonra, her durumda yalnızca bu savunma çalışır:

<style id="antiClickjack">body{display:none !important;}</style>
<script type="text/javascript">
   if (self === top) {
       var antiClickjack = document.getElementById("antiClickjack");
       antiClickjack.parentNode.removeChild(antiClickjack);
   } else {
       top.location = self.location;
   }
</script>

Başlangıçta Gustav Rydstedt, Elie Bursztein, Dan Boneh ve Collin Jackson tarafından önerilen (2010)


19

Bunu bir süre düşündükten sonra, bunun kimin patron olduğunu göstereceğine inanıyorum ...

if(top != self) {
  window.open(location.href, '_top');
}

_topHedef parametre olarak kullanıldığında window.open(), aynı pencerede başlatılır.


6
if (top != self) {
  top.location.replace(location);
  location.replace("about:blank"); // want me framed? no way!
}

6

Cesur olacağım ve şapkamı bunun üzerindeki yüzüğe atacağım (olduğu gibi eski), kaç tane downvotes toplayabileceğimi göreceğim.

Test ettiğim her yerde (Chrome20, IE8 ve FF14) çalıştığı anlaşılan girişimim:

(function() {
    if (top == self) {
        return;
    }

    setInterval(function() {
        top.location.replace(document.location);
        setTimeout(function() {
            var xhr = new XMLHttpRequest();
            xhr.open(
                'get',
                'http://mysite.tld/page-that-takes-a-while-to-load',
                false
            );
            xhr.send(null);
        }, 0);
    }, 1);
}());

Bu kodu yerleştirdim <head>ve sonunda <body>kötü amaçlı kodla tartışmaya başlamadan önce sayfamın oluşturulmasını sağlamak için aradım , bunun en iyi yaklaşım olup olmadığını bilmiyorum, YMMV.

O nasıl çalışır?

... sorduğunuzu duyuyorum - dürüst cevap, gerçekten bilmiyorum. Test ettiğim her yerde çalışmasını sağlamak çok fazla zaman aldı ve sahip olduğu kesin etki, çalıştırdığınız yere bağlı olarak biraz değişiyor.

İşte arkasındaki düşünce:

  • Mümkün olan en düşük aralıkta çalışacak bir işlev ayarlayın. Gördüğüm gerçekçi çözümlerin arkasındaki temel kavram, zamanlayıcıyı, buster-buster'ın çerçevesinden daha fazla olayla doldurmaktır.
  • İşlev her tetiklendiğinde, üst çerçevenin konumunu değiştirmeyi deneyin. Oldukça açık bir gereklilik.
  • Ayrıca hemen çalışması için tamamlanması uzun zaman alacak bir işlev programlayın (böylece çerçeve buster-buster'in konum değişikliğine müdahale etmesini önler). Eşzamanlı bir XMLHttpRequest seçtim, çünkü bunun kullanıcı etkileşimi gerektirmediği (veya en azından istediği) ve kullanıcının CPU zamanını çiğnemediği düşünebildiğim tek mekanizma.

Benim için http://mysite.tld/page-that-takes-a-while-to-load(XHR'nin hedefi) şöyle görünen bir PHP betiği kullandım:

<?php sleep(5);

Ne oluyor?

  • Chrome ve Firefox, XHR tamamlanırken 5 saniye bekledikten sonra çerçeveli sayfanın URL'sine başarıyla yönlendirilir.
  • IE hemen hemen yeniden yönlendiriyor

Chrome ve Firefox'taki bekleme süresinden kaçınamaz mısınız?

Görünüşe göre öyle değil. İlk başta XHR'yi 404 döndürecek bir URL'ye işaret ettim - bu Firefox'ta işe yaramadı. Sonra sleep(5);nihayetinde bu cevap için aldığım yaklaşımı denedim , sonra uyku uzunluğuyla çeşitli şekillerde oynamaya başladım. Davranış için gerçek bir desen bulamadım, ancak çok kısa olursa, özellikle Firefox'un top oynamadığını buldum (Chrome ve IE oldukça iyi davranıyor gibi görünüyor). "Çok kısa" tanımının gerçek anlamda ne olduğunu bilmiyorum, ancak her seferinde 5 saniye çalışıyor gibi görünüyor .


Eğer herhangi bir Javascript ninja neler olup bittiğini biraz daha iyi açıklamak istiyorsa, neden bu (muhtemelen) yanlış, güvenilmez, şimdiye kadar gördükleri en kötü kod vb mutlu bir şekilde dinleyeceğim.


Tüm endişe verici cümlelerinizi kaldırabilirsiniz
mplungjan

6

2015 itibariyle bunun için CSP2 frame-ancestorsdirektifini kullanmalısınız . Bu, bir HTTP yanıt başlığı aracılığıyla uygulanır.

Örneğin

Content-Security-Policy: frame-ancestors 'none'

Tabii ki, pek çok tarayıcı henüz CSP2'yi desteklemediğinden, eski X-Frame-Optionsüstbilgiyi dahil etmek akıllıca olacaktır :

X-Frame-Options: DENY

Her ikisini de dahil etmenizi öneririm, aksi takdirde siteniz eski tarayıcılarda Clickjacking saldırılarına karşı savunmasız kalmaya devam eder ve elbette kötü niyetli niyetiniz olmasa bile istenmeyen çerçeveler elde edersiniz. Çoğu tarayıcı bu günlerde otomatik olarak güncellenmektedir, ancak yine de kurumsal kullanıcıların eski uygulama uyumluluğu nedenleriyle Internet Explorer'ın eski sürümlerine takılma eğilimindedir.


1
Tüm büyük tarayıcılar artık CSP'yi destekliyor. Bu 2019'daki doğru cevap ve öngörülebilir gelecek.
Stephen R

5

Tamam, bunun bir çerçeve içinde olduğunu biliyoruz. Bu yüzden GET değişkeni olarak yolu içeren başka bir özel sayfaya location.href. Şimdi kullanıcıya neler olup bittiğini açıklıyoruz ve target = "_ TOP" seçeneğiyle bir bağlantı sağlıyoruz. Basit ve muhtemelen işe yarayacaktı (test etmedim), ancak bazı kullanıcı etkileşimi gerektiriyor. Belki rahatsız edici siteyi kullanıcıya işaret edebilir ve bir yere sitenize tıklama jackers bir utanç salonu yapabilirsiniz .. Sadece bir fikir, ama gece çalışması ..


5

Önerilen tüm çözümler doğrudan üst pencerenin konumunda bir değişikliği zorlar. Bir kullanıcı çerçevenin orada olmasını isterse ne olur? Örneğin, arama motorlarının resim sonuçlarındaki üst çerçeve.

Varsayılan olarak tüm girişlerin (bağlantılar, formlar ve giriş öğeleri) devre dışı bırakıldığı ve / veya etkinleştirildiğinde hiçbir şey yapmadığı bir prototip yazdım.

Kapsayıcı bir çerçeve algılanırsa, girişler devre dışı bırakılır ve sayfanın üstünde bir uyarı mesajı gösterilir. Uyarı mesajı, sayfanın güvenli bir sürümünü yeni bir pencerede açacak bir bağlantı içerir. Bu, sayfanın tıklamaya yönelik olarak kullanılmasını engellerken, kullanıcının diğer durumlarda içeriği görüntülemesine izin verir.

Herhangi bir çerçeve tespit edilmezse, girişler etkinleştirilir.

İşte kod. Standart HTML özelliklerini güvenli değerlere ayarlamanız ve gerçek değerleri içeren ek özellikler eklemeniz gerekir. Muhtemelen eksiktir ve tam güvenlik için (olay işleyicileri hakkında düşünüyorum) ek özellikler muhtemelen aynı şekilde ele alınacaktır:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
  <head>
    <title></title>
    <script><!--
      function replaceAttributeValuesWithActualOnes( array, attributeName, actualValueAttributeName, additionalProcessor ) {
        for ( var elementIndex = 0; elementIndex < array.length; elementIndex += 1 ) {
          var element = array[ elementIndex ];
          var actualValue = element.getAttribute( actualValueAttributeName );
          if ( actualValue != null ) {
            element[ attributeName ] = actualValue;
          }

          if ( additionalProcessor != null ) {
            additionalProcessor( element );
          }
        }
      }

      function detectFraming() {
        if ( top != self ) {
          document.getElementById( "framingWarning" ).style.display = "block";
        } else {
          replaceAttributeValuesWithActualOnes( document.links, "href", "acme:href" );

          replaceAttributeValuesWithActualOnes( document.forms, "action", "acme:action", function ( form ) {
            replaceAttributeValuesWithActualOnes( form.elements, "disabled", "acme:disabled" );
          });
        }
      }
      // -->
    </script>
  </head>
  <body onload="detectFraming()">
    <div id="framingWarning" style="display: none; border-style: solid; border-width: 4px; border-color: #F00; padding: 6px; background-color: #FFF; color: #F00;">
      <div>
        <b>SECURITY WARNING</b>: Acme App is displayed inside another page.
        To make sure your data is safe this page has been disabled.<br>
        <a href="framing-detection.html" target="_blank" style="color: #090">Continue working safely in a new tab/window</a>
      </div>
    </div>
    <p>
      Content. <a href="#" acme:href="javascript:window.alert( 'Action performed' );">Do something</a>
    </p>
    <form name="acmeForm" action="#" acme:action="real-action.html">
      <p>Name: <input type="text" name="name" value="" disabled="disabled" acme:disabled=""></p>
      <p><input type="submit" name="save" value="Save" disabled="disabled" acme:disabled=""></p>
    </form>
  </body>
</html>

Bununla ilgili sorun, çerçeve oluşturucunun pozisyonu kullanabilmesi: aktif düğmeyi etkin olmayan düğmelerinizin üzerine yerleştirmek için mutlak ve kullanıcı sadece web sayfanızı görecek ve SİZİN düğmelerinizi tıkladıklarını düşünecek.
jmucchiello

Uyarı mesajı gösterilmeye devam eder, ancak elbette önerdiğiniz gibi güvenli sayfanın bağlantısını kapsamak kolaydır. Ancak, sayfayı basitçe kopyalayıp aynı efekti elde edebiliyorsanız, insanların tanıdık bir düğmeyi tıklamaları için sayfamı çerçevelemenin tüm sorunlarına neden bakalım? Yukarıdaki kod, esas olarak tıklamayı önler. Sayfamı başka bir sayfanın üzerinde görünmez bir şekilde gösterirseniz, sitemde işlem başlatmak mümkün değildir.
Johan Stuyts

Bu, IE8 kısıtlı bir bölge çerçevesine veya Chrome sanal alan çerçevesine yerleştirilirse Javascript hiçbir zaman çalışmaz. Bu durumlarda hangi değişikliklerin gerekli olduğunu merak ediyorum
goodguys_activate

4

Sayacın değerini değiştirebilirsiniz, ancak bu kesinlikle kırılgan bir çözümdür. Sitenin bir çerçeve içinde olmadığını belirledikten sonra içeriğinizi AJAX aracılığıyla yükleyebilirsiniz - aynı zamanda harika bir çözüm değildir, ancak umarım önce ununload olayını tetiklemekten kaçınır (sanırım).

Düzenleme: Başka bir fikir. Bir çerçeve içinde olduğunuzu algılarsanız, kullanıcıdan istediğiniz URL'ye yönlendiren bir bağlantıyı tıklamadan önce kullanıcıdan javascript'i devre dışı bırakmasını isteyin (sayfanızın kullanıcıya javascript'i yeniden etkinleştirebileceklerini bildirmelerini sağlayan bir sorgu dizesi ileterek) varmı).

Edit 2: Nükleer çalışın - bir çerçevede olduğunuzu tespit ederseniz, doküman gövdesi içeriğinizi silin ve bazı kötü mesajlar yazdırın.

Edit 3: En üstteki belgeyi numaralandırabilir ve tüm işlevleri null (anonim olanlar bile) olarak ayarlayabilir misiniz?


Outlook (eski adıyla Hotmail) bir çerçeveden çıkamazsa 'nükleer hale gelir' - <body>bir <plaintext>etiketin içindeki içeriğin tamamını koyar display: none. Oldukça etkili.
uınbɐɥs

4

Buster kodundan hemen sonra bir uyarı eklerseniz, uyarı javascript iş parçacığını durduracak ve sayfanın yüklenmesine izin verecektir. Bu, StackOverflow'un yaptığı ve çerçeve yakalama busterini kullandığımda bile iframe'lerimden büst yapıyor. Basit test sayfamla da çalıştı. Bu yalnızca Windows'ta Firefox 3.5 ve IE7'de test edilmiştir.

Kod:

<script type="text/javascript">
if (top != self){
  top.location.replace(self.location.href);
  alert("for security reasons bla bla bla");
}
</script>

3

Sanırım neredeyse oradaydın. Denedin mi:

window.parent.onbeforeunload = null;
window.parent.location.replace(self.location.href);

Veya alternatif olarak:

window.parent.prevent_bust = 0;

Not: Bunu gerçekten test etmedim.


1
Kod örneğinizi düzenledim (ebeveyn testi başarısız görünüyor) ancak düzenlenen sürüm çalışıyor gibi görünüyor!
Jeff Atwood

1
Güzel. Test edilmemiş kodla cevap vermek her zaman zordur - en azından fikri karşı karşıya getirmek için yapıyorum - ve fakir askerin hata ayıklamasına izin ver. :)
Jeff Meatball Yang

12
Ebeveyn farklı bir alandaysa çalışmaz, bu büyük olasılıkla söz konusudur!
Josh Stodola

2

Buster'ı tekrar tekrar çağırmaya ne dersiniz? Bu bir yarış koşulu yaratacaktır, ancak kişi busterın en üste çıkmasını umabilir:

(function() {
    if(top !== self) {
        top.location.href = self.location.href;
        setTimeout(arguments.callee, 0);
    }
})();

2

Döndürülen değerlere setInterval()genellikle tek basamaklı olarak bakarsanız, genellikle bu gibi tüm kesintileri tek bir kod satırıyla devre dışı bırakabilirsiniz:

for (var j = 0 ; j < 256 ; ++j) clearInterval(j)


0

setInterval ve setTimeout otomatik olarak artan bir aralık oluşturur. SetTimeout veya setInterval her çağrıldığında, bu sayı bir artar, böylece setTimeout'u çağırırsanız geçerli, en yüksek değeri alırsınız.

   var currentInterval = 10000;
   currentInterval += setTimeout( gotoHREF, 100 );
   for( var i = 0; i < currentInterval; i++ ) top.clearInterval( i );
   // Include setTimeout to avoid recursive functions.
   for( i = 0; i < currentInterval; i++ )     top.clearTimeout( i );

   function gotoHREF(){
           top.location.href = "http://your.url.here";
   }

10000 eşzamanlı setIntervals ve setTimeouts çalıştığından neredeyse hiç duyulmadığından ve setTimeout "son aralık veya zaman aşımı oluşturulan + 1" değerini döndürdüğünden ve top.clearInterval'a hala erişilebilir olduğundan, kareye siyah şapka saldırılarını yenecek yukarıda açıklanan web siteleri.


0

Yüksek jacking çerçeve kümesini, iframe'i ve resimler gibi içerikleri önlemek için htaccess'i kullanın.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www\.yoursite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule ^(.*)$ /copyrights.html [L]

Bu, beklenen yerine bir telif hakkı sayfası gösterir.


Bu, a) her zaman ayarlanmayan (tarayıcı ayarları veya uzantıları nedeniyle veya yönlendiren sayfa kullanmadan HTTPS kullandığından <meta name="referrer" …/>ve b) bağlantıya tıklandığında da ayarlanan yönlendiriciye dayanır , böylece sayfanıza olan bağlantılara izin vermez ve ağ.
Martin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.