Framebuster 防点击劫持代码为啥不起作用?

保霞的笔记 阅读 10

我在页面里加了常见的 Framebuster 代码,但还是能被别人用 iframe 嵌套,完全没拦住,是不是写法有问题?

我试的是这种:

if (window.top !== window.self) {
  window.top.location = window.self.location;
}

本地测试时确实跳出去了,但放到线上后,别人嵌我的页面居然还能正常显示,一点反应都没有……是我漏了什么配置吗?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
IT人春景
Framebuster 代码在某些情况下确实不太可靠,尤其是现代浏览器对这些脚本的限制越来越多。你用的这个方法在本地测试可以,但上线后无效,可能是由于浏览器的安全策略或者被其他脚本干扰了。

试试这个方法,使用 X-Frame-Options 或 Content-Security-Policy 头来防止点击劫持,比 JavaScript 更可靠。你可以在服务器端设置这些 HTTP 头。

比如,在 Apache 中可以通过 .htaccess 文件添加:
Header always set X-Frame-Options "SAMEORIGIN"

或者使用 Content-Security-Policy:
Header always set Content-Security-Policy "frame-ancestors 'self';"

如果是 Nginx,可以这样设置:
add_header X-Frame-Options "SAMEORIGIN";
或者
add_header Content-Security-Policy "frame-ancestors 'self';";

这样设置后,浏览器会强制执行这些策略,阻止页面被嵌入到其他域的 iframe 中。记得检查一下服务器配置,确保这些头信息正确发送出去。
点赞
2026-03-21 20:07