如何阻止CSS光标偏移导致的按钮点击劫持漏洞?

小阳阳 阅读 509

我在做带光标动画的按钮组件时遇到问题。用transform: translate()让光标图标跟随鼠标,但测试发现恶意页面能通过绝对定位覆盖,让用户点击到隐藏的按钮。试过设置pointer-events: none在覆盖层,但无效。有什么可靠的防御方法?

代码结构类似这样:


<div class="button-container">
  <button>确认</button>
  <div class="cursor-follower">MouseEvent坐标</div>
</div>

CSS用了绝对定位和transform动态调整光标位置,但这样会不会让攻击者伪造点击路径?有没有比检查事件坐标更直接的防护手段?

我来解答 赞 13 收藏
二维码
手机扫码查看
2 条解答
端木惠泽
你这个问题其实挺典型的,属于 **UI 重定向攻击(UI Redressing)** 的范畴。按钮组件本身没问题,但通过 transform: translate() 去模拟光标跟随,再加上绝对定位的图层,就有可能让攻击者伪造点击目标。

---

### 根本原因

你说的没错,pointer-events: none 在这种场景下确实没用,因为攻击者可以把自己的元素覆盖在 .cursor-follower 上,并拦截点击事件。

---

### 标准防御方案

要防止这种点击劫持,有以下几个关键点:

#### ✅ 使用 iframe 隔离敏感操作按钮
如果这个按钮是用于登录、支付、提交等关键操作,**强烈建议用