《白帽子讲Web安全》| 学习笔记之点击劫持(ClickJacking)

第5章 点击劫持(ClickJacking)

1、点击劫持

点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。

2、图片覆盖攻击

点击劫持的本质是一种视觉欺骗。顺着这个思路,还有一些攻击方法也可以起到类似的作用,比如图片覆盖(XSIO)。

XSIO利用的是图片的style,或者能够控制CSS。如果应用没有限制style的position为absolute的话,图片就可以覆盖到页面上的任意位置,形成点击劫持。

由于标签在很多系统中是对用户开放的,因此在现实中有非常多的站点存在被XSIO攻击的可能。在防御XSIO时,需要检查用户提交的HTML代码中,标签的style属性是否可能导致浮出。

3、拖曳劫持与数据窃取

“拖曳劫持”的思路是诱使用户从隐藏的不可见iframe中“拖曳”出攻击者希望得到的数据,然后放到攻击者能控制的另外一个页面中,从而窃取数据。

4、ClickJacking 3.0:触屏劫持

智能手机上的"触屏劫持"攻击被称为TapJacking。

5、防御ClickJacking

一般是通过禁止跨域的iframe来防范。

frame busting:可以写一段JavaScript代码,以禁止iframe的嵌套。这种方法叫frame busting。

比如下段代码:

if( top.location != location ){
    top.location = self.location;
}

但是由于它是用JavaScript写的,控制能力并不是特别强,有许多方法可绕过。

X-Frame-Option:使用一个HTTP头—X-Frame-Option,可以说它是为了解决ClickJacking而生的。

它有三个可选的值:DENY、SAMEORIGIN、ALLOW-FROM origin

当值为DENY时,浏览器会拒绝当前页面加载任何frame页面;若值为SAMEORIGIN,则frame页面的地址只能为同源域名下的页面;若值为ALLOW-FROM,则可以定义允许frame加载的页面地址。

除了X-Frame-Options之外,Firefox的"Content Security Policy"以及Firefox的NoScript扩展也能够有效防御ClickJacking,这些方案为我们提供了更多的选择

6、小结

ClickJacking相对于XSS与CSRF来说,因为需要诱使用户与页面产生交互行为,因此实施成本更高。

你可能感兴趣的:(《白帽子讲Web安全》| 学习笔记之点击劫持(ClickJacking))