黑帽联盟
标题:
使用X-Frame-Options响应头防止iframe内框架调用
[打印本页]
作者:
yun
时间:
2018-3-1 11:29
标题:
使用X-Frame-Options响应头防止iframe内框架调用
防止别人iframe自己的网站,有两种形式:
第一种:在网站程序里面添加
第二种:在网站环境里面添加
使用 X-Frame-Options
X-Frame-Options 有三个值:
DENY
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
表示该页面可以在指定来源的 frame 中展示。
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。
1、在网站程序里面添加,这里主要给这三种语言添加:html、php、jsp
1.1、在html程序里面添加
在head头标签里面添加如下代码:(下面的content值自己选择,这里我选择SAMEORIGIN)
<meta http-equiv="X-Frame-Options" content="SAMEORIGIN">
复制代码
本地测试:
经测试,代码没有生效,没有达到预期的效果。不知道啥问题,有知道是什么原因的,回帖留言,万分感谢
1.2、在php程序里面添加
在程序的开头部位加入以下代码:
header(‘X-Frame-Options:SAMEORIGIN’);
复制代码
本地测试:
经测试,可以达到预期的效果,但是被iframe调用的网站,也不能打不开了。所以此方法也不可行
1.3、在jsp程序里面添加
添加的代码如下:
response.setHeader(“X-Frame-Options”,”SAMEORIGIN”);
复制代码
本地测试:
这里自己还没有测试,有需求的,自己可以测试
2、在网站的配置环境里面添加,主要在iis、apache、nginx里面添加
2.1、配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:(这里我选择属性值为SAMEORIGIN,其它的自己选择)
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
复制代码
本地测试:
经测试,可以完美杜绝网站被iframe
2.2、配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:
Header always append X-Frame-Options SAMEORIGIN
复制代码
本地测试:
经测试,可以完美杜绝网站被iframe
2.3、配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:
add_header X-Frame-Options SAMEORIGIN;
复制代码
本地测试:
经测试,可以完美杜绝网站被iframe
总结:不建议在网站程序内部添加,以免出现不必要的麻烦;如想添加,在网站的配置环境里面添加
欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/)
Powered by Discuz! X2.5