安全避坑

钱包签名是什么意思?Sign Message 安全吗

钱包签名是用你的钱包地址对一段消息做确认,常用于登录、证明地址归属或同意某个操作。它通常不等于直接转账,但仍然可能有安全风险。

钱包签名是什么意思?Sign Message 安全吗

钱包签名是用你的私钥对一段消息盖章,证明「这个地址的主人同意了这段内容」。签名不花 Gas,签的当下也不会出现在链上,所以很多人觉得它无害。但签名能不能动你的资产,要看签的是什么:登录用的文字签名一般没有风险;授权类的结构化签名,可以让对方之后拿着它转走你的代币。

签名和交易有什么区别

交易签名
要不要 Gas要不要
是否立即上链是,可以在区块浏览器查到否,签名交给网站保存
能否动资产能,直接执行取决于内容:授权类签名可以被对方之后拿去上链执行

MetaMask 在签名钓鱼说明里强调:链下签名允许收集签名的一方「在他们选择的时间」使用它,签名这个动作本身不会记录在链上,攻击者也未必立刻动手。

常见的几种签名

  • 文字签名(personal_sign):弹窗里显示一段可读文字,常用于登录,例如 Sign-In with Ethereum。正规的登录消息通常写明网站域名、时间或一次性随机数。只要内容是可读文字、网站是你信任的,这类签名一般不会转移资产。
  • 结构化签名(signTypedData,EIP-712):弹窗按字段展示内容,比如 spender、value、deadline。它可以是挂单、投票,也可以是 Permit、Permit2 这类代币授权,或者 NFT 市场的挂单签名。MetaMask 举过例子:仿冒 NFT 市场诱导用户签下批量挂单消息,从而转走账户里所有 NFT。
  • 看不懂的十六进制内容:一串乱码似的数据,你无法知道自己同意了什么。MetaMask 开发文档已将 eth_sign 标为弃用。遇到看不懂的签名,直接拒绝。

签名弹窗里要看哪几行

  1. 请求来自哪个网站:域名是不是你收藏的那个。
  2. 签名类型和标题:出现 Permit、Approval、Order、Listing 等字样时,要当作授权或交易来对待。
  3. 被授权方和额度:spender 是谁、value 是多少、是否无限、deadline 到什么时候。
  4. 和你要做的事是否一致:你只是想登录,却要签一份代币授权,就不对。

MetaMask 建议开启安全提醒,并在签名前核对请求网址。安全提醒默认开启,但它不能保证识别所有威胁。

什么时候应该直接拒绝

  • 看不懂内容,或者内容是一串十六进制。
  • 网站不是从书签或官方入口进入的。
  • 领取「免费空投」却要签 Permit 或授权你已有的资产。
  • 页面一次性弹出多个签名请求,或者催你尽快签。

拒绝签名没有任何成本。真正需要的签名,你随时可以回到官网重新发起。

常见问题

签名后发现不对,能撤回吗?

签名本身无法撤回。如果签的是 Permit 类授权,可以在对方使用之前,先把相关资产转到另一个钱包,或者按项目说明作废或撤销对应授权;已经被执行的授权,可以用 Revoke.cash 等工具撤销剩余额度,见如何检查和取消授权。

用硬件钱包签名就安全吗?

硬件钱包能确保私钥不离开设备,但签不签、签什么由你决定。在硬件钱包上确认一个恶意授权,结果和普通钱包一样。

登录签名会不会让网站动我的币?

标准的登录签名只是证明你拥有这个地址,不包含授权内容。前提是你确实看到的是一段可读的登录文字,而不是授权字段。

相关阅读

参考资料