前端如何防止 Likejacking 点击劫持攻击? 司空尚斌 提问于 2026-03-24 11:45:20 阅读 32 安全 最近在做社交分享功能,担心被人用透明 iframe 套我的点赞按钮搞 Likejacking,试过加 X-Frame-Options 但好像不够? 我后端是 Nginx,现在加了这行: add_header X-Frame-Options "SAMEORIGIN" always; 但听说现代浏览器更推荐用 Content-Security-Policy?是不是得同时配两个?有没有漏掉啥关键点? 我来解答 赞 1 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 夏侯建英 Lv1 我的做法是同时配置 X-Frame-Options 和 Content-Security-Policy,这样能提供更全面的保护。在 Nginx 配置里除了你写的那行,再加一条: add_header Content-Security-Policy "frame-ancestors 'self';" always; X-Frame-Options 依然有用,特别是对一些老旧浏览器的兼容。但现代浏览器确实更推荐用 Content-Security-Policy,因为它功能更强大灵活。 另外记得检查下其他安全设置,比如确保 HTTPS 开启了,不然这些头信息可能会被中间人攻击篡改。还有就是定期查看服务器日志,看看有没有异常请求。 说到这个,之前自己项目也遇到过类似问题,折腾了好几天,最后发现是某个测试环境没配好,真是让人头大。不过多试几次总能找到解决办法,别灰心。 回复 点赞 2026-03-27 08:05 Tr° 婧妍 Lv1 先检查一下你的设置。X-Frame-Options 是老办法了,确实现在推荐用 Content-Security-Policy (CSP) 来代替或者补充它。你可以同时配置这两个头来增强安全性。 对于 CSP,你需要添加一个 frame-ancestors 指令来控制哪些页面可以嵌入你的内容。假设你只想允许同源的页面嵌入,可以这样配置: add_header Content-Security-Policy "frame-ancestors 'self';" always; 然后你的 X-Frame-Options 配置看起来已经挺好的了,保持原样就行: add_header X-Frame-Options "SAMEORIGIN" always; 这样配置下来,基本上可以防止大部分的点击劫持攻击。不过别忘了定期更新安全策略,并且关注浏览器对这些头的支持情况,有时候新的浏览器版本可能会有新的特性或者变化。 回复 点赞 2026-03-24 12:02 加载更多 相关推荐 1 回答 56 浏览 前端如何防范点击劫持中的 Strokejacking 攻击? 最近在做项目安全审计,听说了一种叫 Strokejacking 的点击劫持变种,说是攻击者通过透明覆盖层诱导用户在不知情下触发操作。我试着加了 X-Frame-Options 和 CSP 的 fram... Des.梦雅 安全 2026-03-14 20:14:22 2 回答 49 浏览 React组件如何检测自身是否被嵌入iframe防止点击劫持? 我在开发一个React仪表盘组件时遇到点击劫持问题,第三方页面用iframe嵌入我的组件后完全覆盖透明层实施攻击。我尝试在组件中添加: componentDidMount() { if (window... ♫希玲 安全 2026-02-02 18:39:29 1 回答 29 浏览 点击劫持防护中如何正确实现用户交互确认? 我在做安全加固时,想防止点击劫持,听说需要用户主动交互才能执行敏感操作。但我试了下,在 React 里加了个确认弹窗,结果还是被测试工具绕过了,是不是我理解错了? 比如下面这个删除按钮,点完还要 co... 婷婷 安全 2026-03-15 21:18:20 2 回答 39 浏览 React 项目如何防止被嵌入 iframe 导致点击劫持? 我最近在做公司后台系统,用的是 React,担心被人用 iframe 嵌套我们的页面搞点击劫持。听说可以通过设置 X-Frame-Options 或 Content-Security-Policy 来... IT人爱静 安全 2026-03-13 19:28:20 2 回答 59 浏览 如何防止嵌套页面被点击劫持?X-Frame-Options和CSP设置无效? 最近在开发仪表盘页面时,发现嵌套的表单页面被恶意网站用iframe嵌入,导致用户误操作点击劫持。我尝试在服务器配置中设置了X-Frame-Options: SAMEORIGIN,并在CSP头里写了: ... 开发者世杰 安全 2026-02-10 00:58:31 2 回答 276 浏览 Vue项目嵌套第三方iframe时如何防止点击劫持? 我在开发一个需要嵌入第三方表单的Vue应用,但安全扫描提示存在点击劫持风险。虽然设置了X-Frame-Options响应头,但测试时发现嵌套iframe的内容仍然可以被透明覆盖。这是怎么回事? 我尝试... 司空露露 安全 2026-01-29 11:17:27 2 回答 55 浏览 React组件如何防止点击劫持绕过确认弹窗? 我正在给一个删除按钮加确认弹窗,但测试时发现如果页面被嵌入iframe,攻击者仍能通过透明覆盖层触发点击。虽然用了事件冒泡阻止和CSS定位,但效果不好。代码如下: function ConfirmBu... 欧阳士媛 安全 2026-01-28 09:20:38 1 回答 38 浏览 透明遮罩防点击劫持为啥没生效? 我在页面里加了个透明遮罩防止点击劫持,但好像没啥用,别人还是能嵌到 iframe 里点按钮。是不是我写法有问题? 试过在 body 上盖一层全屏 div,z-index 设得很高,但实际测试时发现点击... ___倩利 安全 2026-03-21 19:33:21 1 回答 31 浏览 前端如何防止Cookie被劫持? 我最近在用Vue做登录功能,后端返回的session cookie好像没加安全属性,担心会被XSS或者中间人攻击偷走。试过在axios里加withCredentials,但不知道前端能不能主动设置co... 皇甫俊凤 安全 2026-03-20 16:32:20 1 回答 43 浏览 点击劫持防护中如何正确检测页面是否被嵌入iframe? 我在做点击劫持防护,看到可以用 top !== self 来判断是否被嵌套,但实际测试时发现有些情况下这个判断不生效,比如在同域 iframe 里。我试了下面这段代码,但好像还是会被绕过? <s... 萌新.辽源 安全 2026-03-18 21:40:21
X-Frame-Options 依然有用,特别是对一些老旧浏览器的兼容。但现代浏览器确实更推荐用 Content-Security-Policy,因为它功能更强大灵活。
另外记得检查下其他安全设置,比如确保 HTTPS 开启了,不然这些头信息可能会被中间人攻击篡改。还有就是定期查看服务器日志,看看有没有异常请求。
说到这个,之前自己项目也遇到过类似问题,折腾了好几天,最后发现是某个测试环境没配好,真是让人头大。不过多试几次总能找到解决办法,别灰心。
对于 CSP,你需要添加一个 frame-ancestors 指令来控制哪些页面可以嵌入你的内容。假设你只想允许同源的页面嵌入,可以这样配置:
然后你的 X-Frame-Options 配置看起来已经挺好的了,保持原样就行:
这样配置下来,基本上可以防止大部分的点击劫持攻击。不过别忘了定期更新安全策略,并且关注浏览器对这些头的支持情况,有时候新的浏览器版本可能会有新的特性或者变化。