来理解 一下:
点击劫持(Clickjacking)是一种通过视觉欺骗的手段来达到攻击目的手段。往往是攻击者将目标网站通过 iframe 嵌入到自己的网页中,通过 opacity 等手段设置 iframe 为透明的,使得肉眼不可见,这样一来当用户在攻击者的网站中操作的时候,比如点击某个按钮(这个按钮的顶层其实是 iframe),从而实现目标网站被点击劫持。
————————————————
预防手段
1)让 iframe 不能够跨域访问
判断 top.location.hostname (iframe 嵌入的那个网站的域名)和 self.location.hostname (iframe 自己的域名)不一致时可以给出可能不安全的提示,用户确认安全的情况下再操作。
2)在响应头中加上 X-Frame-Options: sameorigin
表示允许相同域嵌入此页面(X-Frame-Options: deny 表示禁止内嵌此页面)。
3)防止网页被其他网站内嵌为 iframe
首先在页面中添加如下样式:
body{display: none;}
然后添加类似如下的脚本:
<script type="text/javascript">
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
<<span class="hljs-regexp">/script>
参考资料:
https://blog.csdn.net/2301_79360008/article/details/132332322
https://www.kancloud.cn/wizardforcel/owasp-cheat-sheet-zh/121935