跳到主内容
快讯直播
AI智模界
AI 词典

点击劫持:你点的按钮,可能不是你以为的那个

点击劫持(Clickjacking)是一种网页攻击手法:攻击者把目标网站的页面藏在透明的图层下面,再诱导你在某个位置点一下,结果这一下落在了目标网站真正的按钮上。

一次点击是怎么被“接走”的

浏览器分派点击事件时的逻辑很简单:看这个坐标上最顶层的元素是谁,就把这次点击交给谁。攻击者要做的,就是控制“顶层显示什么”和“底下藏什么”。

三步就能完成:

1. 用 <iframe> 把目标页面嵌进自己的页面。如果这个目标页面是社交平台、支付页或第三方登录授权页,而且它没有禁止被嵌入,就会被嵌进去。

2. 用 CSS 把 iframe 变成透明(opacity: 0),再通过绝对定位把这个真实按钮挪到诱饵按钮下面,并对齐位置和尺寸。

3. 在顶层放一句诱人的话:“点击领取优惠券”“我不是机器人”“继续播放”。

你眼睛看到的是诱饵,浏览器却按坐标分派事件,你的点击就从诱饵落到了下面那个看不见的真实按钮上。整个过程没有注入任何脚本,目标网站也分辨不出这一下和你亲手点的一下有什么区别——因为它确实是你亲手点的,而且还带着你的登录状态。

打个比方:银行柜台的玻璃。玻璃下面压着一份转账单,签名栏正好在你面前;玻璃上面贴着一张“扫码领咖啡”的纸。你伸手在玻璃上按了个手印,单子上就多了一个签名。

还有拖拽劫持、光标劫持等变体,本质相同:骗的不是密码,是你的手。

和相邻概念的区别

点击劫持 ClickjackingCSRF 跨站请求伪造XSS 跨站脚本
需要你亲手点击需要不需要视情况
是否需向目标站注入代码不需要不需要核心手法
借用了什么你的点击坐标 + 已登录会话浏览器自动携带的 Cookie目标站对自身页面的信任
主要防御X-Frame-Options、CSP 的 frame-ancestorsCSRF AI 词典:Token">Token、SameSite Cookie输出转义、CSP、输入过滤

一句话记:XSS 是往别人页面里塞东西,CSRF 是让你在不知情时发请求,点击劫持是让你看见 A、点到 B。

为什么现在值得重新提起

一是“被嵌入”变得普遍。可嵌入的对话窗口、第三方登录授权页、SaaS 结算页,经常被放进别人的 iframe 里。凡是允许被嵌入的页面,都应当明确设置 X-Frame-Options: DENY/SAMEORIGIN,或用 CSP 的 frame-ancestors 加以限制(具体取值与兼容性以 MDN 及厂商官方文档为准)。

二是“代你点”的东西变多了。浏览器自动化、RPA、以及让模型操作网页的 Agent,很多是按像素坐标或视觉位置点击的。人会看错,模型也会——它“看见”的按钮和它实际点中的元素,可能是两个东西。做这类工具时,点击前核对命中元素、优先用语义定位而不是坐标,是实打实的工程要求。

对普通人来说也一样:如果一个页面莫名其妙要你“验证”“领券”“播放”,点完之后账号却发了内容、关注了陌生人、授权了应用,那可以想一想这个词。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。