React组件如何防止点击劫持绕过确认弹窗?
我正在给一个删除按钮加确认弹窗,但测试时发现如果页面被嵌入iframe,攻击者仍能通过透明覆盖层触发点击。虽然用了事件冒泡阻止和CSS定位,但效果不好。代码如下:
function ConfirmButton({ onDelete }) {
const [showModal, setShowModal] = useState(false);
const handleClick = (e) => {
e.stopPropagation(); // 尝试阻止冒泡
setShowModal(true);
};
return (
{showModal && (
确认删除?
)}
>
);
}
</code>
即使设置了pointer-events和stopPropagation,攻击者还是能通过iframe定位到按钮坐标点击。有没有更可靠的防御方式?
1. 加一个时间戳校验,确保用户真的点了确认按钮
2. 检查窗口是否被iframe嵌套
直接上代码:
这样基本能防住大部分攻击了。记得再结合CSP策略一起用,效果更好。