安全实战与案例库中级688 次阅读
盲签风险:看不懂的签名为什么不能签
盲签时你看不懂的那串数据,链上可能等价于一次资产授权。理解签名与授权的等价关系,以及看不懂时的处理流程。
#安全#盲签#签名#授权风险
一句话结论
盲签的问题在于:你看不懂的那串内容,在链上可能等价于「允许对方拿走你的资产」,而签名一旦被使用就没有反悔的余地。
为什么「看不懂」也能签成功
钱包能展示的信息有限。遇到复杂合约调用,钱包往往只能显示一段哈希或一串十六进制数据,这就是所谓的盲签。而 EIP-712 这类结构化签名,本意是让内容可读,但不少 DApp 并没有把关键字段讲清楚,用户看到的仍然是一屏术语。
结果就是:弹窗上看起来只是「确认一下」,链上效果可能是把某个代币的全部额度授权出去,或者批准一笔你根本没打算执行的转账。
盲签会造成什么后果
- 等价授权:签下的内容被用来构造一笔授权交易,攻击者随后可以转走对应代币
- 挂单被代取:在某些协议里,签名本身就是「谁都能代为提交的订单」,攻击者拿到签名后直接执行
- 不可撤销:链上签名无法撤回,只能事后撤销授权、转移资产
要建立的认知是:签名不是「确认一下」,而是「你同意了这件事」——同意什么,以你签下的那份数据为准,而不是以弹窗文案为准。
遇到看不懂的签名怎么办
- 先停下来:页面催促不是理由,关掉弹窗不会丢东西
- 核对域名:确认站点是不是官方入口,正规 DApp 很少出现完全没有说明的签名
- 用小额钱包试:拿一个只放少量资产的地址先跑一遍完整流程,观察链上到底发生了什么
- 拒绝并索要替代方案:正规项目通常会尽量提供可读的签名内容,拒绝盲签是合理要求
- 别把硬件钱包当免死金牌:硬件钱包只保证私钥不离开设备,签什么内容仍然靠你自己判断
给你的教训
- 看不懂就不签,这是唯一不会出错的规则。
- 签名等于同意,不要把它当成无害的「登录动作」。
- 用隔离钱包试新协议,把看不懂的操作限制在不心疼的金额上。
- 硬件钱包防的是私钥泄露,不防你签错。
- 事后发现签错,第一时间撤销授权并转移资产。