钱包提示"签名请求已过期"之后,很多用户会担心重新发起签名是否安全,会不会被恶意截获。先给出明确结论:重新发起签名本身是安全的,但前提是确认两件事——签的是同一个请求,且没有在过期后切换到完全陌生的网络环境。签名过期是协议层面的超时机制,不是安全漏洞。
签名为什么会过期
WalletConnect 的签名请求有默认的超时时间。根据官方文档,请求默认存活期是 5 分钟,在这段时间里钱包没响应,请求就自动失效,返回错误码 4100"Request expired"。这不是钱包在拒绝你,是协议层面的安全设计——防止有人拿着一个旧的、你本来没批准的签名请求,在几小时后等你放松警惕时再让你签。
有些钱包或 DApp 会把这个过期时间拉到更长,比如支持"扩展会话"功能,最长可达 7 天。但普通场景下,你遇到的超时就是那 5 分钟。
重新发起前,先看一眼这三点
1. 确认弹窗的内容和上次完全一样
[做什么]:核对签名消息内容 [怎么做]:DApp 重新发起请求后,钱包弹窗里会出现要签名的消息文本或结构化数据。用手机截屏或者和上次看到的内容逐字对比——正规的 DApp 两次发起的内容应该完全一致。 [完成标准]:钱包弹窗显示的消息内容(可读文本或 0x 开头的 hash)和上一次请求一模一样,没有任何新增字段或乱码。
风险提醒:如果第二次弹窗里的消息内容变成了你完全看不懂的一串十六进制,且上次看的时候还是可读的英文,那就要警惕了——可能是 DApp 被篡改,也可能你访问的是钓鱼站点。直接拒绝,不要签。
2. 确认你还在同一个网站上
[做什么]:检查浏览器地址栏 [怎么做]:看一眼当前 DApp 的完整域名(包括二级域名)。有些钓鱼网站会抢在签名过期后弹出假的签名请求,域名和正版只差一个字母。 [完成标准]:域名和你第一次发起请求时完全一致。如果记不清,直接把 DApp 的官方链接从收藏夹或官方渠道重新打开一次,再从里面发起连接和签名。
3. 不要把"签名过期"和"会话过期"搞混
签名的请求超时,和你的钱包连接会话超时,是两码事。
签名请求过期:5 分钟后 DApp 没收到你的签名,主动放弃了。你重新点一次签名,钱包会弹新的请求。
会话过期或断开:DApp 页面显示"Disconnected"或者地址消失了。这种情况如果直接发起签名,钱包可能不会弹窗,你得先重新连接钱包再操作。
如果你遇到的是后者——断开连接后重新连,再发起签名,这时候要额外注意:重新连接时确认你授权的是"签名"权限,而不是"无限代币授权"。有些 DApp 在重连流程里会把签名请求包装成一个"批准"操作,你点快了就可能给了不该给的权限。
一种必须拒绝的情况
GitCoin 的 Passport 项目曾经曝出一个问题:用户会话过期后回到页面,钱包自动弹出了签名请求,没有任何用户主动点击触发。这就是教科书级别的"盲签"风险——你根本不知道自己签了什么,只是因为页面刷新就自动弹了出来。
如果你的情况也是这样——页面刷新或切回来自动弹窗要求签名,没有任何你主动点击"连接"或"签名"的动作——直接拒绝。重新加载页面,手动找到"连接钱包"或"签名"按钮,由你主动触发的请求才值得信任。



