在我blog上搜Clickjacking还能搜到frame busting的东西,呵呵
frame busting是指利用js判断location以防止网页被别人iframe内嵌的一个实现:
if ( top.location != location )
top.location = self.location;
如果还不明白的请wikipedia一下。
我记得以前百度首页还有这个的,本来还想测下绕过百度的实现,结果今天一看,发现百度不知道什么时候撤销了。
20号有老外发布了篇paper,论述了各种framebusting的实现和绕过技巧:
这是黑哥非常崇拜的那个stanford的安全实验室出品,必属精品啊。
从技术创新上来说,只能给3.5 - 4分,但是作者认真的态度和全面的资料搜集,是这篇paper的亮点。
小结:
几种攻击方法:
1. 二次frame(不能针对 top.location,只能针对 parent.location)
2. 利用 onbeforeunload 事件
3. xss
4. 构造referer绕过js referer检查
5. 浏览器漏洞(茄子曾经指出的那个IE7直接改location的bug)
6. iframe security属性(仅IE支持)
7. iframe sandbox属性(HTML5)
8. 浏览器designmode
9. 部分手机站点
推荐的防御方法:
1. X-Frame-Options (我记得我blog过这个header)
2. CSP(mozilla的项目,搜我blog)
3. 用hidden 元素的方法,有点山寨,不过有用且通用
最后,需要提醒的是:clickjacking远远不止iframe一个页面,还有很多类似效果的实现,比如所有链接的劫持(通过XSS),比如XSIO(图片覆盖,搜我blog),比如flash的clickjacking,所以,不要以为整了framebusting就万事大吉了,呵呵。
阅读(2523) | 评论(0) | 转发(0) |