
适用范围与检查思路
本文主要适用于以太坊自托管钱包及ERC-20代币交互。检查可围绕三个问题展开:谁掌握密钥,这次确认允许什么行为,过去授出的权限是否仍然有效。其他链或不同钱包的权限机制可能不同,不能直接套用所有细节。
密钥与入口:先确认控制权是否暴露
ethereum.org安全说明强调保护助记词和私钥、核对网站与交易内容,并警惕冒充客服和返还翻倍骗局。检查备份时,应关注截图是否同步到云端,以及是否曾把恢复信息交给他人。

页面标识、社交账号或链接预览不能单独证明网站真实,需核对实际域名。硬件钱包能减少私钥暴露在联网环境中的风险,但如果用户确认了危险操作,离线保管密钥也不能消除该操作的后果。

授权:核对对象、代币与额度
OpenZeppelin的ERC-20文档说明,approve用于设置指定支出方的额度,allowance表示剩余额度,transferFrom可在额度范围内代为转移代币;其实现还支持相当于无限额度的授权。
因此,授权检查需要同时识别代币合约、支出方地址和额度。普通ERC-20授权作用于对应代币,并不自动覆盖钱包里的全部资产;但额度过大,会扩大该权限被滥用时的影响。修改现有非零额度还需考虑交易排序风险,不能只看界面上的新数值。
签名:没有立即扣款也需检查
文档列出的ERC20Permit支持通过签名授权,因此不支付Gas的签名也可能产生资产权限。检查时需要区分普通身份验证与授权类请求,并关注可读内容中的授权对象、额度及有效条件。
正常签名不会直接把私钥发送给网站。恶意请求可能通过获得有效授权或诱导资产转移造成损失,不能把所有签名风险都解释为私钥泄露。无法理解签名内容时,也就无法确认其权限边界。
常见问题:断开连接是否足够
断开网站连接通常不会清除已经记录在链上的代币授权,两者属于不同层面的状态。检查旧权限需要查看实际授权记录;撤销授权也无法追回已经转出的资产。
钱包能正常打开、密钥仍由自己保管,都不能单独证明资产没有风险。密钥安全、签名安全与合约授权需要分别检查;这些检查也不构成对某个DeFi协议整体安全性的证明。