2013-06-12 22 views
0

說,我有一個網站與URL site.com。我如何知道引用者是否從iframe獲取我的網址,如下所示: <iframe src="http://site.com"></iframe>或引用者CLICKS(!!)此鏈接位於某個站點,其中鏈接是通常的a-tag:<a href="http://site.com">go to site</a>我如何知道(在服務器端)是否有人從iframe或直接訪問它?看到裏面

我想告訴我的服務器端這兩個分開。也許,有一種方法可以通過JS做到這一點?提前致謝。

回答

2

它可以在JavaScript中完成,但不能直接在服務器端完成。你可以,但是,在這兩種情況一個一個簡單的JavaScript重定向將此信息傳遞給服務器:

if (window.self === window.top) { 
    // you're not in an iframe 
} else { 
    // in an iframe (or other frames), act accordingly 
} 

或者,如果你只是想防止您的網站在iframe中被查看,可以通過發送X-Frame-Options header來做到這一點。

0

Javascript只是客戶端(除非您使用的是Node.js),所以無法告訴服務器端是否從iframe或普通超鏈接引用了某些內容。

你想要這樣做的原因是什麼?看起來好像你將不得不尋找解決問題的另一種方法。

0

如果您試圖阻止您的網站顯示在iframe中,則可以使用破幀腳本執行此操作的最佳方法之一。 (請注意,您的網絡服務器仍然會發生請求/響應)。

在不希望「框起」的文檔的<head>中包含以下內容。

<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> 
+0

下面是關於這種方法的'owasp.org'文檔的鏈接:https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Best-for-now_Legacy_Browser_Frame_Breaking_Script – KajMagnus

相關問題