点击劫持是指在一个Web页面下隐藏了一个透明的iframe(opacity:0),用外层假页面诱导用户点击,实际上是在隐藏的frame上触发了点击事件进行一些用户不知情的操作。
clickjacking.png
危害:
- 盗取用户资金
- 获得用户的敏感信息
- 与XSS或CSRF等其他攻击手段配合
防御方法:
1)Javascript中禁止内嵌
因为普通页面的top对象为window,而iframe的top对象不等于window对象,可以在JS代码中:
if (top.location !== window.location){
top.location == window.location
}
这样如果存在嵌套的iframe,页面就会进行跳转,避免的点击劫持。
但是这种防御方式并不完善,如果攻击者设置ifame的属性sandbox="allow-forms" 时防御就失效。
2)X-FRAME-OPTIONS 防止内嵌
服务器端可设置HTTP头 "X-Frame-Options:DENY"来让浏览器主动禁止iframe内嵌
不过这种方式在HTTP中不可靠,黑客可以窃听篡改HTTP请求来修改HTTP头。
3)对于Firefox的用户,使用 NoScript 扩展
NoScript 能够在一定程度上检测和阻止点击劫持攻击。
4)其他辅助手段
如XSS和CSRF的防御方法,也可以防御点击劫持后对服务器端的攻击
网友评论