点击劫持 (Clickjacking)
点击劫持 (Clickjacking) 是什么?
点击劫持 (Clickjacking)通过把目标页面叠加或隐藏在攻击者控制的页面之内,诱导用户点击与所见不符的目标的 UI 欺骗攻击。
点击劫持把敏感页面(例如账号设置、OAuth 授权、支付确认)以 iframe 嵌入恶意站点中,并在视觉上加以伪装——通常借助透明度、精心设计的 CSS 叠加层,或将其策略性地定位在诱饵按钮之下。用户以为自己在与可见页面交互,而其点击、触摸或拖拽实际上被传递到隐藏的框架中,从而在其已认证的会话里执行操作。
该术语由 Jeremiah Grossman 与 Robert Hansen 于 2008 年提出,他们演示了将 Adobe Flash 的设置管理器嵌入框架,从而悄然启用受害者的摄像头和麦克风。由此衍生出的防御手段 X-Frame-Options 头被标准化为 RFC 7034(2013),此后被 Content-Security-Policy 的 frame-ancestors 指令所取代,后者粒度更细,并支持多个允许的源。各类变种仍在不断演化:cursorjacking、拖放数据窃取以及 likejacking。2024 年末,研究员 Paulos Yibelo 发表了"DoubleClickjacking",它利用双击的两个事件之间的间隙,在第一次点击之后替换底层页面,从而绕过 X-Frame-Options、frame-ancestors 和 SameSite cookies——因为在点击发生时实际上并不存在跨站框架。
防御措施综合运用框架控制(frame-ancestors 'self' 或显式的允许列表)、对敏感操作要求明确的用户手势与确认、在获得焦点后短暂延迟内禁用按钮,以及使用 SameSite cookies 限制跨上下文状态。
flowchart TD A[受害者访问<br/>攻击者页面] --> B[诱饵 UI:<br/>'点击赢取大奖'] B --> C[不可见 iframe 加载<br/>真实目标站点] C --> D[受害者已登录<br/>目标站点] B --> E[透明叠加层<br/>对齐隐藏按钮] E --> F[受害者点击诱饵] F --> G[点击落在隐藏的<br/>'批准'按钮上] G --> H[操作在受害者<br/>会话中执行]
● 示例
- 01
页面上显示"点击此处赢取大奖",但按钮上方覆盖着指向社交网络分享授权对话框的透明 iframe。
- 02
像素级精确的叠加层诱使用户点击攻击者应用的 OAuth 授权页面上的"批准"按钮。
● 常见问题
点击劫持 (Clickjacking) 是什么?
通过把目标页面叠加或隐藏在攻击者控制的页面之内,诱导用户点击与所见不符的目标的 UI 欺骗攻击。 它属于网络安全的 攻击与威胁 分类。
点击劫持 (Clickjacking) 是什么意思?
通过把目标页面叠加或隐藏在攻击者控制的页面之内,诱导用户点击与所见不符的目标的 UI 欺骗攻击。
如何防御 点击劫持 (Clickjacking)?
针对 点击劫持 (Clickjacking) 的防御通常结合技术控制与运营实践,详见上方完整定义。
点击劫持 (Clickjacking) 还有哪些其他名称?
常见的别称包括: UI 重叠攻击。