Web应用安全之点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER

/玄魂html

 

         目录nginx

 

 

 

前言... web

 

1.1 点击劫持(clickjacking attacks)... apache

 

1.2  Frame Bursters. 浏览器

 

1.3 The X-Frame-Options. 安全

 

1.3.1 X-Frame-Options. 服务器

 

1.3.2 Apache配置X-Frame-Options. cookie

 

1.3.3 Nginx 配置X-Frame-Options. app

 

1.3.4 IIS配置X-Frame-Options. ide

 

1.4 浏览器兼容性... 

 

前言

Clickjacking(点击劫持)是由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼在2008年提出的。

是一种视觉欺骗手段,在web端就是iframe嵌套一个透明不可见的页面,让用户在不知情的状况下,点击攻击者想要欺骗用户点击的位置。”

假设你访问一个web站点并看到以下的页面:

免费的午饭谁都喜欢,当你满怀期待的点击按钮“WIN”的时候,恭喜你,你已经被点击劫持了。你实际点击的连接以下:

这是登陆网上银行以后的一个转帐连接,转移你的所有资产给Kim Dotcom先生。可是你根本你没有看到这个页面,像作梦同样。这只是一个简单的示例,实现上在网上银行转帐不会这么简单,可是却告诉咱们一个道理,访问网页和看魔术表演同样,看到的不必定都是真的。

下面咱们具体讨论下点击劫持的内部机制,和防护措施。

1.1点击劫持(clickjacking attacks

点击劫持的表象通常是用户点击了页面的A元素,可是实际上接收点击事件的倒是另一个元素。

如今改变下页面内个元素的透明度,再来看下刚才的页面。

咱们能够看到,在ipad页面是上部还有个层,其实是一个iframe,如今的透明度为50%,实际的页面中它的透明度为0%,虽然被隐藏不可见,可是随时均可以被激活。

 Firefox3D视图下,观察这个页面更明显。

被隐藏的iframeIPAD页面的上部,同时转款的连接正好在“WIN”的上方,由于设置了透明度,用户只能看到“WIN”,但实际点击的是转款。

攻击者的页面内容多是这样的:

<div style="position: absolute; left: 10px; top: 10px;">Hey - we're giving away iPad minis!!! Just click the WIN button and it's yours!!!</div>

<div style="position: absolute; left: 200px; top: 50px;">

  <img src="http://images.apple.com/my/ipad-mini/overview/images/hero.jpg" width="250">
</
div>

<div style="position: absolute; left: 10px; top: 101px; color: red; font-weight: bold;">>> WIN <<</div>

<iframe style="opacity: 0;" height="545" width="680" scrolling="no" src="http://mybank/Transfer.aspx"></iframe>

代码就是这么简单,下面咱们观察一下点击“WIN”时实际上点击“转款”连接时的http请求信息。

从图中标记的地方,能够看到请求的实际地址和身份验证的cookie信息。固然这样的攻击能成功,在于用户已经登陆的网上银行。这样的攻击行为和请求伪造很相似。

下面咱们讨论下针对点击劫持的基本防护方法。

1.2  Frame Bursters

这是在页面上经过脚原本防止点击劫持或者iframe恶意请求的方式,本文不作介绍,详见http://seclab.stanford.edu/websec/framebusting/framebust.pdf,乌云有篇相似的中文文章共参考http://drops.wooyun.org/papers/104

1.3 The X-Frame-Options

X-Frame-Options HTTP 响应头,能够指示浏览器是否应该加载一个iframe中的页面。网站能够经过设置X-Frame-Options阻止站点内的页面被其余页面嵌入从而防止点击劫持。

1.3.1 X-Frame-Options

X-Frame-Options共有三个值:

DENY

任何页面都不能被嵌入到iframe或者frame中。

SAMEORIGIN

页面只能被本站页面嵌入到iframe或者frame中。

ALLOW-FROM uri

页面自能被指定的Uri嵌入到iframeframe中。

1.3.2 Apache配置X-Frame-Options

在站点配置文件httpd.conf中添加以下配置,限制只有站点内的页面才能够嵌入iframe

Header always append X-Frame-Options SAMEORIGIN

配置以后重启apache使其生效。该配置方式对IBM HTTP Server一样适用。

若是同一apache服务器上有多个站点,只想针对一个站点进行配置,能够修改.htaccess文件,添加以下内容:

Header append X-FRAME-OPTIONS "SAMEORIGIN"

1.3.3 Nginx 配置X-Frame-Options

 nginx/conf文件夹下,修改nginx.conf ,添加以下内容:

add_header X-Frame-Options "SAMEORIGIN";

重启Nginx服务。

1.3.4 IIS配置X-Frame-Options

web站点的web.config中配置:

<system.webServer>

  ...

  <httpProtocol>

    <customHeaders>

      <add name="X-Frame-Options" value="SAMEORIGIN" />

    </customHeaders>

  </httpProtocol>

  ...

</system.webServer>

1.4 浏览器兼容性

桌面浏览器:

相关文章
相关标签/搜索