点击劫持(Clickjacking)是一种 Web 安全攻击,攻击者使用透明的
<iframe>覆盖在钓鱼页面上,诱导用户点击实际上是目标网站的操作按钮。
解决的核心痛点:如何防止页面被恶意嵌入并诱导用户点击?
核心命题
- 点击劫持利用透明iframe让用户以为自己点击的是A,实际点击的是B
- 原理:通过 CSS opacity: 0 和 z-index 让用户视觉上无法察觉
- 禁止页面被嵌入是防御点击劫持的核心
- 原理:通过 CSP frame-ancestors 或 X-Frame-Options 限制嵌入
攻击原理
- 攻击者在恶意页面嵌入目标网站的透明 iframe
- 通过 CSS 定位将目标按钮与诱导按钮重叠
- 用户以为自己点击的是诱导按钮,实际点击的是目标按钮
防御方法
| 方法 | 说明 |
|---|---|
| CSP frame-ancestors | 指定哪些页面可以嵌入当前页面 |
| X-Frame-Options | DENY / SAMEORIGIN 禁止嵌入 |
| Frame Busting | JS 检测并跳出 iframe(已过时) |