移动端点击劫持怎么防?加了X-Frame-Options还是被嵌套了?

技术艳珂 阅读 5

我在做公司官网的支付页面,听说点击劫持在移动端会变成“触摸劫持”,特别担心用户误触。我已经在响应头里加了 X-Frame-Options: DENY,但测试时发现别人还是能用 iframe 嵌入我的页面(虽然点不动),这算不算有风险?

而且 iOS Safari 好像对 X-Frame-Options 支持不太一致,有没有更靠谱的前端防护方案?比如用 JS 检测是否被嵌套?我试过下面这段代码,但不确定是否足够安全:

if (window.top !== window.self) {
  window.top.location = window.self.location;
}
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
Air-静依
你的 JS 方案太弱了,父页面可以拦截跳转或者用 sandbox 关掉。

移动端就踏实用 CSP,比 X-Frame-Options 靠谱多了:

add_header Content-Security-Policy "frame-ancestors 'self' https://yourdomain.com;";


如果想前端检测,加个提示让用户自己点,别强行跳转(容易被拦截):

if (window.top !== window.self) {
document.write('
' +
'

页面被嵌入了,存在安全风险

' +
'在原窗口打开' +
'
');
}


移动端触摸劫持本质上没法靠前端彻底解决,关键是后端 CSP 配好,别让人随便嵌入你的支付页面。
点赞
2026-03-13 18:02