点击劫持
# 什么是点击劫持
假设一种情况, 用户登陆了微博没有退出,然后来到另一个网站, 这个网站就很坏坏, 他通过iframe嵌入了微博网站, 然后加一层遮罩隐藏掉, 然后他再诱惑用户做交互, 例如点击. 当用户点击的时候, 其实真正点击的, 并不是用户表面看到的按钮, 而是被隐藏起来的微博网站的按钮, 这些按钮可能是一个关注或者转发, 那这样的话, 用户就无意中关注的一个微博用户或者转发了一些自己不想转发的内容, 这就是我理解的点击劫持.
# 防范
就上面的案例, 要做防范的应该是微博这样容易受到这类攻击的网站.
- 网站加入脚本控制, 检测如果网站被iframe引入, 强制跳转到我们的网站
<style id="clickject">
html {
display: none !important;
}
</style>
1
2
3
4
5
2
3
4
5
if (self === top) {
let targetStyle = document.getElementById("clickject")
targetStyle && targetStyle.parentNode.removeChild(targetStyle)
} else {
top.location = self.location;
}
1
2
3
4
5
6
2
3
4
5
6
- 通过HTTP请求头限制当前页面不允许被嵌入其他网站
X-FRAME-OPTIONS:DENY | SAMEORIGIN。DENY表示任何网页都不能使用 iframe 载入该网页,SAMEORIGIN表示符合同源策略的网页可以使用 iframe载入该网页
← XSS