点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER
转载: http://www.tuicool.com/articles/mqUBfa
目录
前言
1.1 点击劫持(clickjacking attacks)
1.2 Frame Bursters.
1.3 The X-Frame-Options.
1.3.1 X-Frame-Options.
1.3.2 Apache配置X-Frame-Options.
1.3.3 Nginx 配置X-Frame-Options.
1.3.4 IIS配置X-Frame-Options.
1.4 浏览器兼容性...
前言
本文整理改编自以下文章:
http://www.troyhunt.com/2013/05/clickjack-attack-hidden-threat-right-in.html
https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
“ Clickjacking (点击劫持)是由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼在 2008 年提出的。
是一种视觉欺骗手段,在 web 端就是 iframe 嵌套一个透明不可见的页面,让用户在不知情的情况下,点击攻击者想要欺骗用户点击的位置。”
假设你访问一个 web 站点并看到如下的页面:

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

这是登录网上银行之后的一个转账链接,转移你的全部资产给 Kim Dotcom 先生。但是你根本你没有看到这个页面,像做梦一样。这只是一个简单的示例,实现上在网上银行转账不会这么简单,但是却告诉我们一个道理,访问网页和看魔术表演一样,看到的不一定都是真的。
下面我们具体讨论下点击劫持的内部机制,和防御措施。
1.1 点击劫持( clickjacking attacks )
点击劫持的表象一般是用户点击了页面的 A 元素,但是实际上接收点击事件的却是另外一个元素。
现在改变下页面内个元素的透明度,再来看下刚才的页面。

我们可以看到,在 ipad 页面是上部还有个层,实际上是一个 iframe ,现在的透明度为 50% ,实际的页面中它的透明度为 0% ,虽然被隐藏不可见,但是随时都可以被激活。
在 Firefox 的 3D 视图下,观察这个页面更明显。

被隐藏的 iframe 在 IPAD 页面的上部,同时转款的链接正好在“ 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
嵌入到
iframe
或
frame
中。
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
浏览器兼容性
桌面浏览器:

点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER的更多相关文章
- 点击劫持ClickJacking
原文:https://beenle-xiaojie.github.io/2019/01/07/ClickJacking/ 引言 当我们的页面嵌入到一个iframe中时,安全测试提出一个于我而言很新鲜的 ...
- Nginx配置各种响应头防止XSS,点击劫持,frame恶意攻击
为什么要配置HTTP响应头? 不知道各位有没有被各类XSS攻击.点击劫持 (ClickJacking. frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面.为此一直都在搜寻相关防 ...
- 基于iframe的CFS(Cross Frame Script)和Clickjacking(点击劫持)攻击
攻击原理: CFS攻击(Cross Frame Script(跨框架脚本)攻击)是利用浏览器允许框架(frame)跨站包含其它页面的漏洞,在主框架的代码 中加入scirpt,监视.盗取用户输入 ...
- Web安全之点击劫持(ClickJacking)
点击劫持(ClickJacking)是一种视觉上的欺骗手段.大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的 ...
- Web应用安全之点击劫持(CLICKJACKING)与X-FRAME-OPTIONS HEADER
点击劫持(clickjacking)与X-Frame-Options Header 文/玄魂 目录 前言... 1.1 点击劫持(clickjacking attacks)... 1.2 Frame ...
- 158.Clickjacking点击劫持攻击实现和防御措施
clickjacking攻击: clickjacking攻击又称为点击劫持攻击,是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段. clickjacking攻击场景: ...
- ClickJacking(点击劫持)
问题: 点击劫持(ClickJacking)是一种视觉上的欺骗手段.大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点 ...
- 点击劫持漏洞解决( Clickjacking: X-Frame-Options header missing)
点击劫持漏洞 X-Frame-Options HTTP 响应头, 可以指示浏览器是否应该加载一个 iframe 中的页面. 网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面 ...
- 点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本
前言: 放假了,上个星期刚刚学习完点击劫持漏洞.没来的及写笔记,今天放学总结了一下 并写了一个检测点击劫持的脚本.点击劫持脚本说一下哈.= =原本是打算把网站源码 中的js也爬出来将一些防御的代码匹配 ...
随机推荐
- I/O之输出流 OutputStream类
java的I/O技术可以将数据保存到文本.二进制.ZIP压缩文件中,下面来说说一些基本的常识(今天只讲理论).先来说说流,何为流?“流就是一组有 序的数据序列,根据操作的类型,可以分为输入(Input ...
- IOS NSThread
任何一个 iOS 应用程序都是由一个或者多个线程构成的.无论你是否使用了多线程编程技术,至少有 1 个 线程被创建.多线程就是为了提高引用程序的工作效率!避免阻塞主线程!当我们没有用任何多线程技术的话 ...
- Swift开发第四篇——柯里化
本篇分为两部分: 一.柯里化的基本使用 二.柯里化的使用场景 一.柯里化的基本使用 柯里化(Currying):也就是把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并且返回结果 ...
- 最简MacOs10.8安装
虚拟机中安装Mac Os X的方法网上很多很多,但是对刚接触的朋友来讲肯定不是一件容易的事,这个自己深有体会,包括去年已经装好过,今年再找教程安装都装不起来,期间还出现了各种问题,幸好去年装好之后备份 ...
- 关于C语言中单双引号的问题
代码 #include<stdio.h> int main() { if ( "{" =='{' ) printf("True\n"); else ...
- JMeter源码集成到Eclipse
由于JMeter纯Java开发,界面也是基于Swing或AWT搞出来的,所以想更深层次的去了解这款工具或对于想了解JMeter插件开发或二次开发的童鞋们来说,读读JMeter的源码估计是必不可少的,所 ...
- ARP协议的报文格式
原文链接地址:http://www.cnblogs.com/laojie4321/archive/2012/04/12/2444187.html 结构ether_header定义了以太网帧首部:结 ...
- 详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案
主要的几个功能: 1.完成多条Emp信息的XML描述2.读取XML文档解析Emp信息3.将Emp(存放在List中)对象转换为XML文档4.在XML文档中查找指定特征的Emp信息 dom4j,jaxe ...
- 10901 Missile
10901 Missile 时间限制:1000MS 内存限制:65535K提交次数:40 通过次数:7 Description Long, long ago, country A invented ...
- 【Android Demo】获取指定网页的页面源代码
1.直接上效果图 2.代码 主要就是工具类HtmlService.java: import java.io.ByteArrayOutputStream; import java.io.InputStr ...