钱包里哪些交互是安全的?

最近实在太不太平了,骗术无数,每天都能听到有人中招,每周还会出现一起几百E的大盗窃案。花了点时间研究,感谢 wcy 帮我解答,又长了很多见识,给大家分享下。

这里罗列了常见的那些交互,以最最常用的metamask为例,我们可以做个练习:

  1. 假如你听说一个项目很火在mint,点开mint网站,以下哪些交互是安全的?
  2. 假如一个项目给mfer所有者一个白名单,他要验证下你钱包里是否真的有mfer,那以下哪些交互是安全的?

先说答案:图 1、2、3 在大多数场景下都安全。场景1里 mint 的时候就是图 8,所以图 8 也安全。其他的都或多或少存在可能的风险。

一一道来:

图 1 是完全安全的,是一个只读操作,dApp 在这里只能拿到你的地址。

图 2、3、5、6 是一系列的,操作都是给一段 message 加签名,加签名的作用是像 dApp 证明你是你。2、3、5、6 也依次是这类签名的进化(具体见 EIP-712)。这里只用注意一个点,如果消息比较简短,那大概率无害;消息如果比较长,则需要三思一下。

举个例子,Opensea 现在在做 listing 的时候,就用了图 6 的形式。如果在 Opensea 上看到,那么是 ok 的。然而,如果一个奇怪的网站,让你签名的时候有这么一长串,那么他可能实际是让你签一个 Opensea 的 list 操作,把你的 NFT 以极低的价格卖掉。

图 4 是无比危险的,metamask 已经标明了大红色(但无力吐槽这个 UI )。显示的message 是 hash 后的结果,所以你无法知道签名的内容是什么。最坏的情况,他的内容是转走你所有的资产,这样你的钱包会完全空掉。

图 4、5、6 还在说明一个事实:就算你的交互看起来没有花 gas,但结果一样能把你的资产转走。所以,大家不要以是否花 gas 作为是否可能危险的依据。

图 7、8、9 要花 gas 了,那说明至少一点,它一定会往链上提交操作,可能危险!所有这些操作,我们需要看清楚左上角的行为。MINT 行为也许是最安全的一样,在 mint 的时候,你顶多损失 mint 本身的价格+gas。图 7 里的 SAFE TRANSFER FROM(不要被 SAFE 这个词骗了)会把你的 NFT 直接转走!图 9 里的 SET APPROVAL FOR ALL 给了对方转走你所有 NFT/token 的权限!也就是说,图 7 无论如何都不能点,图 9 只有在交易所才可能。

其他在这些弹窗里还可以关注的点是:网站是不是对的;to 对应的 contract 是不是个验证过的contract;网络(ETH, Polygon, etc)是不是对的,等等。

如果对这些弹窗不那么熟的话,metamask 自己做了一个测试页面,大家可以去把玩一下(拿测试号)。

除了 metamask 交互本身的安全以外,其他的安全建议有:

  1. 私钥和助记词无论如何不能给出,也不要用剪切板 copy paste,更不能拍照截屏,或者存在网盘里。记住私钥或者助记词就是你的钱包全部;
  2. 冷热钱包分离,所有要去交易的都用热钱包,冷钱包只做转入转出操作,如果要卖一个冷钱包里的NFT,宁可花一点gas把他先转出来到热钱包里;
  3. 去 mint 时,或者试一些 dApp 时,最好用一个小号钱包;
  4. 最好搞个虚拟机,里面配好干净的系统(比如 selinux),再做snapshot。每次进入都用这个干净的系统做交易,以防止系统被木马攻击。

最后,祝大家 web3 冲浪开心,并且保护好自己和自己的钱包。

Subscribe to web..1..2..3!
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.