Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
天有人反饋了一個(gè)在iframe內(nèi)無法調(diào)用網(wǎng)站同一個(gè)站點(diǎn)的頁面問題并報(bào)錯(cuò),就在網(wǎng)站查了一些相關(guān)的資料,整理一下關(guān)于禁止網(wǎng)站所有頁面或某一個(gè)頁面被iframe內(nèi)框架調(diào)用的方法。
網(wǎng)站iframe內(nèi)框架調(diào)用頁面報(bào)錯(cuò)如下
Refused to display http://xxxxxx.com in a frame because it set 'X-Frame-Options' to 'deny'.
通過查到的資料可得知,此錯(cuò)誤與iframe框架被調(diào)用頁面的 HTTP 標(biāo)頭中 X-Frame-Options 設(shè)置有關(guān),所以整理了如下資料
X-Frame-Options是一個(gè)HTTP響應(yīng)頭,用來告訴瀏覽器此頁面是否可以在其它網(wǎng)頁中的frame或iframe標(biāo)簽中被渲染,網(wǎng)站可以利用此響應(yīng)頭來避免被其它網(wǎng)站所劫持。
X-Frame-Options有三個(gè)參數(shù)值,分別如下
DENY:表示不能被嵌入到任何iframe或frame中。
SAMEORIGIN:表示頁面只能被本站頁面嵌入到iframe或者frame中。
url,指定是一個(gè)域名,表示此網(wǎng)頁只能被指定域名下的頁面中的框架所調(diào)用
html代碼
以下代碼,添加到HTML頁面中的head標(biāo)簽內(nèi)即可
代碼1:html頁面禁止被框架調(diào)用
<meta http-equiv="X-Frame-Options" content="deny">
代碼2:只允許頁面被本站調(diào)用
<meta http-equiv="X-Frame-Options" content="SAMEORIGIN">
代碼3:只允許頁面被指定URL嵌套調(diào)用
<meta http-equiv="X-Frame-Options" content="http://www.feiniaomy.com">
PHP代碼
<?php //示例1 header('X-Frame-Options: deny'); //示例2 header('X-Frame-Options: SAMEORIGIN'); //示例3 header('X-Frame-Options: http://www.feiniaomy.com'); ?>
攻擊者可以使用一個(gè)透明的、不可見的iframe標(biāo)簽,加載目標(biāo)頁面,然后通過調(diào)整iframe頁面的位置,誘導(dǎo)用戶進(jìn)行點(diǎn)擊操作頁面的功能區(qū),并劫持用戶的數(shù)據(jù),達(dá)到劫持頁面的目的。
<script type="text/javascript">
if (window!=top) // 判斷當(dāng)前的window對(duì)象是否是top對(duì)象
top.location.href =window.location.href;
// 如果不是,將top對(duì)象的網(wǎng)址自動(dòng)導(dǎo)向被嵌入網(wǎng)頁的網(wǎng)址
</script>
段代碼是有效的。但是,有一個(gè)問題:使用后,任何人都無法再把你的網(wǎng)頁嵌入框架了,包括你自己在內(nèi)。
有沒有一種方法,使得我的網(wǎng)頁只能被嵌入我自己的框架,而不是別人的框架?
try{
top.location.hostname;
if (top.location.hostname != window.location.hostname) {
top.location.href =window.location.href;
}
}
catch(e){
top.location.href = window.location.href;
}
原文地址:
http://www.ruanyifeng.com/blog/2010/08/anti-frameset_javascript_codes_continued.html
通過使用框架,你可以在同一個(gè)瀏覽器窗口中顯示不止一個(gè)頁面。每份HTML文檔稱為一個(gè)框架,并且每個(gè)框架都獨(dú)立于其他的框架。
使用框架的壞處:
框架結(jié)構(gòu)標(biāo)簽(<frameset>)
Frame 標(biāo)簽定義了放置在每個(gè)框架中的 HTML 文檔。
在下面的這個(gè)例子中,我們?cè)O(shè)置了一個(gè)兩列的框架集。第一列被設(shè)置為占據(jù)瀏覽器窗口的 25%。第二列被設(shè)置為占據(jù)瀏覽器窗口的 75%。HTML 文檔 "frame_a.htm" 被置于第一個(gè)列中,而 HTML 文檔 "frame_b.htm" 被置于第二個(gè)列中:
<html> <frameset cols="25%,75%"> <frame src="/example/html/frame_a.html"> <frame src="/example/html/frame_b.html"> </frameset> </html>
HTML基礎(chǔ)教程:框架基礎(chǔ)
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。