白帽子讲WEB安全 第五章 点击劫持(Click Jacking)
点击劫持:它通过覆盖不可见的框架误导受害者点击。
虽然受害者点击的是他所看到的页面,但其实他所点击的是被黑客精心设计的另一个置于原网页之上的透明页面。
这种攻击利用了HTML中的<iframe>的标签的透明属性。
图片覆盖攻击(Cross Site Image Overlaying)XSIO:通过调整图片的style使得图片能覆盖在任意位置。
拖拽劫持:诱使用户从隐蔽的不可见iframe中“拖拽”出攻击者希望得到的数据到攻击者能控制的页面,来窃取数据。
(拖拽是不受同源策略的限制的,可以从一个窗口拖拽到另一个窗口)。
触屏劫持:通过将一个不可见的iframe覆盖到当前网页上,可以劫持用户的触屏操作。
防御ClickJacking:
1)frame busting :可以写一段JavaScript,以禁止iframe嵌套。
eg:if(top != self)
if(top.location != self.location)
if(top.location != location)
if(parent.frames.length > 0)
if(window != top)
if(window.top != window.self)
if(parent && parent != window)
缺陷:使用JavaScript写的控制力不是特别强,有许多方法能绕过。
2)X-Frame-Options:一个HTTP头,为解决ClickJacking而生。
它有三个选项:
DENY-------浏览器拒绝当前页面加载任何的frame页面。
SAMEORIGIN--------frame 页面的地址只能为同源域名下的页面。
ALLOW-FROM--------可以定义允许frame加载的页面地址。
3)Firefox的“Content Security Policy”
主要是用来定义页面可以加载哪些资源,减少XSS的发生。
4)Firefox的NoScript扩展
noscript 元素用来定义在脚本未被执行时的替代内容(文本)。
此标签可被用于可识别 <script> 标签但无法支持其中的脚本的浏览器。