如何防止页面中的按钮被Strokejacking攻击?

Zz爱景 阅读 19

我在开发一个在线支付页面时,发现按钮区域容易被恶意页面通过透明IFrame覆盖,导致用户误触转账操作。虽然设置了X-Frame-Options: DENY,但测试时发现攻击页面仍然能嵌套我的页面。

我尝试给按钮添加了style="pointer-events: none",但这样会导致正常用户也无法点击按钮。查看攻击页面代码发现他们用了allowtransparency属性,这和我之前了解的防御方法好像不太一样…

现在卡在如何同时满足:1. 允许合法框架嵌套(有些合作方需要) 2. 确保关键按钮区域无法被覆盖点击。有什么更可靠的防御方案吗?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
宇文雯婧
frame-ancestors 指令代替 X-Frame-Options,CSP 的 frame-ancestors 更灵活,能指定允许嵌套的域名。关键按钮区域加个透明的 div 盖在上面,攻击者点不到按钮也搞不了事情。

<style>
#protective-layer {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 9999;
background: transparent;
}
</style>

<div id="protective-layer"></div>
<button id="critical-button">支付</button>


差不多就行,记得把 #protective-layer 调整到合适的范围,别挡了正常功能。
点赞
2026-02-15 13:17