授权钓鱼:一次点击怎么把钱包掏空
钱包资产被划走,很多时候钱包主人自己是点过"确认"的——不是私钥被破解,而是很早之前签过的一次代币授权,一直挂在链上没人去关掉。这篇讲清楚这一下"确认"到底在授权什么、钓鱼站怎么设计这个陷阱,以及中招后和平时该怎么处理。
代币授权(approve)到底是在干什么
授权(approve)是你在链上告诉某个合约地址:允许你从我的钱包里拿走最多这么多某种代币,而这个"允许"在你主动撤销之前会一直有效,不是用一次就自动失效。
最常见的场景是用 DEX 换币:大部分情况下第一步不是转账,而是先授权(approve),让 DEX 的合约能动用你钱包里的这种代币,授权成功之后才能进行第二步真正的兑换(swap)。这个设计是代币标准本身的机制——协议层面就是这么规定的(参见 ethereum.org 关于 ERC-20 标准的说明),不是哪个平台自己发明的坏心思规则,目的是让合约在后续操作里不用每次都单独找你签一次转账。问题不出在"授权"这个动作本身,而出在这份权限给了多大额度、给了谁,这是接下来几节的重点。
授权和转账不是一回事,为什么授权反而更危险
转账是一次性的,钱包里的币转出去就是转出去了,风险有限且当场可见;授权更像是给了对方一把随时能来取货的钥匙,只要额度和时间没到期,对方什么时候来取、取多少,你未必第一时间知道。
举个例子:授权 1000 枚某代币给一个合约,当下不会立刻扣走一分钱,你的余额看起来完全没变化。
很多人授权之后就把这事忘了。
直到某一天这个合约的逻辑被换掉,或者管理权限的私钥被盗,又或者这个地址本身就是恶意合约,它才会真正把额度用掉。转账的风险是"当下这一笔",授权的风险是"未来任意一笔,直到你主动撤销"。授权列表值得定期回头看一眼,不是签完就彻底忘掉。
换个更好理解的说法:转账像是当面把现金递给对方,交易一结束这事就完了;授权更像是把家门钥匙配了一把给某个人,当下他没有进门,但只要钥匙还在他手上,哪天想进就能进——你能做的只有一件事:不用的钥匙就收回来,别指望对方一直不动心思。
| 动作 | 触发时间 | 风险持续期 |
|---|---|---|
| 转账 | 当下立即执行 | 仅这一笔,执行完即结束 |
| 授权(approve) | 只是给权限,不立即划款 | 直到主动撤销为止,可能是数月甚至更久 |
具体每条链的确认时间、Gas 成本以链上实时情况为准,本文说明查证于 2026 年 7 月。
"无限授权"这四个字要命在哪
授权弹窗里那个额度数字,你仔细看过吗?多数人不会,直接点了确认。
那通常是一串看不出实际意义的极大数字。很多钱包和 DApp 默认给的授权额度是接近理论上限的一个数字,远不止"够用就好",一次签名就把额度开到顶格,而不是按实际需要的数量单独申请。
默认给无限授权,图的是省事:对用户体验来说,好处是"以后不用再签一次",这对普通使用确实方便,但风险是这份授权覆盖了你钱包里这种代币能有的全部余额,包括未来存进去的部分,具体取决于额度的设定方式。一旦这个被授权的合约地址出问题——不管是代码本身有漏洞、管理员私钥被盗,还是这个地址本来就是钓鱼团伙精心部署的恶意合约——你钱包里这一种代币能被卷走的上限,就是这份授权允许的额度,而不是"当时打算换的那一点点"。
排查授权的时候,额度大小比合约地址是不是"看起来正规"更值得先看一眼——一个界面做得很正规的项目,同样可能默认给出无限额度,不是只有粗糙的钓鱼页面才这么干。判断一份授权危不危险,先看额度封顶到哪,再看这个合约地址有没有被公开标注过风险。
钓鱼站怎么让你自己签下这一下
常见的三个场景是假空投领取页、假客服私信、假 NFT 铸造(mint)页,它们的共同套路是营造一个"现在不点就错过"的场景,把你的注意力从签名内容本身移开。
假空投页:页面做得跟正规项目一模一样,提示"检测到你有资格领取空投,点击连接钱包并领取",连接之后跳出来的是一次代币授权签名,并非"领取"的交易,项目名字、图标都是照抄官方素材。
假客服:在 Discord、Telegram 甚至项目官方群里私信你,冒充管理员或客服,以"帮你处理卡单问题""验证钱包资格"为由,发一个看起来像官方域名(其实差了一两个字母)的链接,引导你连接钱包并签名。
假 NFT mint:蹭热门系列的名字,或者蹭还没正式公布的新项目消息,做一个"抢先 mint"页面,营造限量、限时的紧迫感,让你来不及细看弹窗内容就点了确认。
这三种场景的共同点是:钓鱼链接本身通常不会直接把钱转走,而是引导你完成一次授权或签名,后续再由攻击者主动"取货"。
这类钓鱼在某个项目、某个话题热度特别高的阶段会明显变多,原因很直白:越多人在等空投、等新项目上线,越多人愿意为了不错过而放松警惕,钓鱼团伙抓的就是这个心态错位的窗口——越是觉得"这次机会不能错过",越应该多花十秒确认清楚。
紧迫感是信号:任何要求你"马上连接钱包""限时领取""名额有限"的页面,先把这份急迫感放一边,花十秒看清楚域名和弹窗内容,真正的项目方通常不会靠这种方式催你签名。
签名钓鱼和授权钓鱼,到底哪里不一样
授权钓鱼是骗你签一笔链上交易(approve),这笔操作本身会花一点 Gas、也会留在链上记录里;签名钓鱼骗的是链下签名(比如 permit 或者 eth_sign 这类),不上链、不花 Gas,钱包弹窗看起来"风平浪静",反而更容易被忽略。
讲人话说说 permit 和 eth_sign:早期的授权都要单独发一笔 approve 交易,这笔交易看得见、也要付 Gas,某种程度上是个天然的刹车,因为要花钱多少会让人多想一步。后来出现了 permit 这类机制,允许你用一次链下签名来"预先授权"——不上链、不花 Gas,这个签名之后可以被拿到它的人在链上兑现。好处是省 Gas、体验更顺滑,坏处是签名本身长得不像转账、也不出现在钱包的交易记录里,你在弹窗里看到的往往是一串不好读的十六进制数据或者一句陌生的英文操作说明,很容易在没细看的情况下就点了确认。eth_sign 更极端,理论上能对任意数据签名,包括伪装成一笔完整交易的数据,现在多数钱包已经默认拦截或者标红警示这类请求——如果你的钱包弹出这种警告,先停下别点。
已经点了怎么办:中招后的第一时间
发现钱包被划走的那一刻,人是懵的——脑子里第一反应往往是到处找"能不能追回"的办法。
先别慌,也别病急乱投医去点"来路不明的解锁工具",第一步是把还没花完的资产转到一个新地址,第二步才是回头处理授权。
1. 立刻转移剩余资产——如果钱包里还有东西没被转走,先把它们转到一个全新生成、没有暴露风险的地址,这一步优先级最高。只要授权还挂着,资产随时可能被取走,先保住能保住的部分,比先撤销授权更紧急。
2. 回头清理授权——转移完成后,再用区块浏览器或 revoke.cash 这类撤销工具查一遍原来那个钱包上挂着哪些授权,该撤的撤,具体操作路径见 怎么撤销代币授权 这篇。
3. 判断要不要弃用整个钱包——如果泄露的是私钥或助记词本身,不只是签过某个授权,那这个钱包壳子基本不能再用了,得用全新生成的助记词换一个新钱包,旧地址上能转出的东西转完就弃用。
4. 留个记录——把被骗的域名、过程、链上交易哈希记下来,虽然多数情况下追不回资产,但这些信息对提醒身边人、或者少数能配合核实的平台方,还是有用的。
5. 想清楚要不要报案——涉及金额较大的,建议保留好前面记录的证据去当地网警或者对应机构报案,报案未必能追回,但能留一份正式记录,对后续万一有机会核实、或者同一伙人作案被并案处理,都有帮助。别指望私信里主动联系你、说能帮忙追回资产的"专业人士",这类找上门的"帮忙"本身就是第二轮骗局的常见开头。
怎么定期体检,把该撤的授权撤掉
没出事不代表没风险,授权这东西是"挂着就一直有效",定期查一遍、把用不上的额度关掉,是花几分钟就能做完的体检。
可以参考的节奏是每次用完一个新 DApp 之后看一眼,或者每隔几个月做一次整体体检:用 Etherscan 这类区块浏览器或撤销类工具查一遍钱包地址名下的授权列表,重点看两类——很久没再用过的老 DApp,以及额度显示为"无限"的授权,能改小额度就改小,用不上的直接撤销。这个操作本身也是一笔链上交易,会花一点 Gas,但跟可能损失的资产比,这点成本不值一提。具体撤销的操作路径,我们在 怎么撤销代币授权 这篇里逐步写了。
签名弹窗跳出来,怎么看懂它在问什么
弹窗突然跳出来,你会花几秒看完,还是直接点确认?
钱包弹窗里通常会显示几个关键字段:请求方域名、要操作的合约地址、授权额度或者签名的数据类型,这几个看懂了,大半的钓鱼签名当场就能识别出来。
域名对不对得上:弹窗顶部或者钱包的连接记录里会显示发起请求的网站域名,跟你以为自己在的那个网站是不是完全一致——注意查有没有多一个字母、换了后缀、或者用数字替代字母这类障眼法。
操作类型是 approve 还是 transfer:很多钱包会直接标出这次请求的方法名。
"approve"意味着这是一次授权而不是普通转账,如果你以为自己只是在"领取"或"查看",却看到 approve 字样,先停下来再想一遍。
额度是具体数字还是"无限":有的钱包会把授权额度直接换算展示出来,如果显示的是一个远超你实际需要、看起来像理论上限的数字,大概率是默认的无限额度,多数钱包支持在弹窗里手动把这个数字改成够用就好的具体额度。
签名内容是不是自己看不懂的一长串:如果签名请求的内容就是一串十六进制乱码,钱包又没法给出人类可读的摘要,这本身就是一个危险信号——越看不懂的东西越不该随手签下去。
请求方是谁,和你要做的事对不对得上:弹窗一般会带出发起请求的 DApp 名称或者图标,回头想一下自己刚才点开的是哪个页面、打算做的是哪件事——如果你只是想查看一下余额,却跳出一个要签名或授权的请求,这中间的动作对不上号,本身就值得多想一步再决定。
很多钱包会把可编辑的 allowance 放在"高级"或"详细信息"里。签名前展开该区域,核对 spender 与当前 dApp 是否一致,再确认授权数字是这次操作需要的额度,而不是默认的无限上限。
关于授权,还有人问过
授权(approve)之后,对方会立刻把我的币转走吗?
不会立刻,授权本身只是给了权限,不等于当下发生了转账。风险在于这份权限会一直挂着,直到你主动撤销,对方随时可能在未来某个时间点用掉这份额度。
我只是签了个名,没点"授权",还会有风险吗?
有,而且这类风险更容易被忽视。像 permit 这样的链下签名不上链、不花 Gas,钱包弹窗也不会像 approve 交易那样显眼,但签名一旦给出去,同样可以被对方在链上兑现,效果跟授权类似。判断风险高不高,别看有没有花 Gas,要看这个签名到底在授权什么。
多久检查一次授权比较合适?
没有固定答案,一个可参考的节奏是每次用完一个新 DApp、或者隔几个月做一次整体体检,用区块浏览器或撤销工具查一遍钱包名下的授权列表,把长期没用、额度又是无限的那些先处理掉。参与过热门空投或者密集用过几个新项目之后,更值得抽空查一遍。