503d269759ee3d6d05f850ed41166d224f4adede


描述:目标服务器没有返回一个X-Frame-Options头。

X-Frame-Options HTTP响应头是用来确认是否浏览器可以在frame或iframe标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。
危害:攻击者可以使用一个透明的、不可见的iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击iframe页面的一些功能性按钮上,导致被劫持。


解决方案:

修改web服务器配置,添加X-frame-options响应头。赋值有如下三种:
(1)DENY:不能被嵌入到任何iframe或frame中。
(2)SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中。
(3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。

PHP解决方案

header('X-Frame-Options: deny');

ASP解决方案

<%
    response.AddHeader "X-Frame-Options","Deny"
%>

ASP.NET解决方案

Response.AddHeader("X-Frame-Options", "Deny");

Nginx解决方案

Nginx防止方法

add_header X-Frame-Options SAMEORIGIN

可以加在locaion中

location /
{
     add_header X-Frame-Options SAMEORIGIN;
}

Apahe 防止方法

Header always append X-Frame-Options SAMEORIGIN

使用后不充许frame的页面会显示一个白板

JavaScript解决方案

一段很简单的javascript代码,大家只要将它放入网页源码的头部,那些流氓就没有办法使用你的网页了。

<script type="text/javascript"> 
if (window!=top) // 判断当前的window对象是否是top对象
 { 
top.location.href =window.location.href;// 如果不是,将top对象的网址自动导向被嵌入网页的网址 
 
} 
</script>

升级一下彻底防止别人用iframe框架嵌套调用自己的网页,如下方法是最可靠的.
这里赋值为空页面,也可赋值为你的页面的url地址.

<script type="text/javascript"> 
if(top != self){
    location.href = "about:blank";
}

</script>

IIS解决方案

如果确认你整个网站都不能被框架,可以直接设置web服务器,增加X-Frame-Options响应头。IIS如下图所示,增加http头

浏览器对X-Frame-Options响应头的支持

浏览器对X-Frame-Options响应头的支持如下

浏览器版本支持
IE8.0+
Firefox3.6.9+
Opera10.50+
Safari4.0+
Chrome4.1.249.1024+


上面代码只能防止最简单的,如果对方使用的是利用php curl抓取呢?这样我们需要封对方IP才可以,最常用的就是在于apache或防火墙中把对方IP设置为黑名单了,这样就抓取不了。