指南 · 作者 区块链机制研究组 · 发布 2026-04-15 · 更新 2026-04-15
连接陌生 DApp 前,Rabby 用户应该检查什么
连接一个陌生 DApp 之前,Rabby 会给你几秒钟的确认窗口。这几秒钟,是你保护自托管资产的最后防线。本文整理了一套可操作的交互前检查清单,覆盖域名、授权、签名内容和花费上限四个核心环节。
连接一个陌生 DApp,Rabby 会弹出确认窗口,很多人习惯性地直接点「确认」。这个动作本身不一定出问题,但如果你不知道自己在确认什么,这几秒钟就是资产损失的起点。
这篇文章的目的不是吓你,而是帮你建立一套可以反复使用的检查习惯。方法以 Rabby 为入口,但逻辑可以迁移到任何自托管钱包。
为什么「连接前检查」比事后补救更重要
链上交易的特性决定了它的不可逆性。一旦你签署了一笔授权或转账,没有客服,没有撤单,没有冻结账户这些选项。自托管的本质是你对自己的资产拥有完全控制权,代价是你也对每一个操作负完全责任。
Rabby 在这个环节做了一些有价值的工作:它会在你确认之前,用相对可读的语言解析交易内容,标注风险等级,提示合约是否经过审计。但工具只能辅助判断,最终的决定还是你来做。
养成「连接前检查」的习惯,本质上是在给自己建一道人工防火墙。
第一关:域名核查
钓鱼攻击是 DApp 生态里最常见的攻击方式之一,而它的入口几乎都是一个假域名。
攻击者会注册与知名协议极度相似的域名,比如把字母 l 换成数字 1,把 .io 换成 .net,或者在域名中间插入一个多余的连字符。视觉上几乎无法区分,但你连接的已经是一个完全不同的合约。
检查方法:
- 不要通过搜索引擎广告位点击进入 DApp,广告位可以被购买用于投放钓鱼链接。
- 优先使用你自己收藏夹里保存的官方地址,或从项目官方 Twitter/Discord 的置顶链接进入。
- 进入页面后,在 Rabby 弹出连接请求时,仔细核对弹窗顶部显示的域名,和你预期的官方域名逐字符比对。
- 如果域名有任何细微差异,立刻关闭页面,不要继续操作。
Rabby 会在连接请求弹窗中显示请求来源域名,这是你核查的第一个信息点。
第二关:合约授权范围
连接 DApp 之后,很多操作需要你先「授权」合约使用你的代币。这一步在技术上叫做 approve,它允许某个合约地址在你的钱包里动用指定代币,最高到你授权的额度。
问题在于,很多 DApp 默认请求的是「无限授权」(Unlimited Approval),也就是说,一旦你点了确认,这个合约理论上可以在任何时候转走你钱包里该代币的全部余额,只要你没有主动撤销。
你需要检查的内容:
- 授权的是哪个代币?是你预期要操作的那个吗?
- 授权额度是多少?是具体数值还是「无限」?
- 被授权的合约地址是什么?Rabby 会显示合约名称和风险标注,注意查看。
操作建议:
在 Rabby 的授权确认界面,你可以手动修改授权额度。把「无限」改成你本次操作实际需要的金额,是一个低成本但有效的风险控制动作。操作完成后,如果你不打算长期使用这个协议,可以通过 Rabby 内置的授权管理或第三方工具撤销授权。
第三关:签名内容的含义
签名(Sign)和授权(Approve)是两个不同的操作,但都可能造成资产损失,而且签名往往更隐蔽。
有些签名请求不需要支付 Gas,看起来「无害」,但实际上你可能在签署一个 Permit 授权,或者一个 setApprovalForAll(NFT 全量授权),或者一个离线订单。这些操作的后果和链上授权完全一样,但因为不消耗 Gas,很多人误以为「不花钱就没风险」。
Rabby 在这里的优势: 它会尝试解析签名内容,用人类可读的格式显示你在签什么,而不是只展示一串十六进制字符串。
你需要重点关注的签名类型:
Permit/Permit2:这是一种离线授权机制,签名后合约可以在链上执行授权,不需要你再单独发一笔 Approve 交易。setApprovalForAll:NFT 全量授权,签署后对方可以转移你钱包里该合约下的所有 NFT。- 不明来源的结构化数据(EIP-712):如果 Rabby 无法解析签名内容,或者显示的内容你看不懂,这是一个强烈的停止信号。
遇到无法理解的签名请求,正确的做法是拒绝,而不是「试试看」。
第四关:代币花费上限的设置逻辑
花费上限(Spending Limit / Allowance)是授权机制的核心参数,值得单独展开说。
很多用户在第一次使用某个 DApp 时,会接受默认的无限授权,理由是「以后还要用,省得每次都授权」。这个逻辑在便利性上说得通,但在安全性上存在一个持续暴露的风险窗口:只要该合约存在漏洞,或者协议本身出现问题,你的代币就处于潜在风险中。
一个更稳健的思路:
- 对于你频繁使用的成熟协议,可以设置一个合理的固定上限,而不是无限。
- 对于你第一次尝试的陌生协议,只授权本次操作需要的金额。
- 操作完成后,定期检查并清理不再使用的授权记录。
Rabby 提供了授权管理界面,可以查看你当前钱包对各个合约的授权状态,并支持一键撤销。这个功能建议定期使用,而不是等到出问题再想起来。
常见误区:「连接」和「授权」不是一回事
很多新用户把「连接钱包」和「授权合约」混为一谈,这是一个需要澄清的基础概念。
连接(Connect): 你允许 DApp 读取你的钱包地址和余额信息,用于显示界面数据。这个操作本身不会转移任何资产,也不会给合约任何动用你代币的权限。
授权(Approve / Permit): 你允许某个合约地址在你的钱包里动用指定代币,最高到授权额度。这才是真正的风险节点。
签名(Sign): 根据签名内容不同,可能是无害的身份验证,也可能等同于一次授权。需要具体看签名内容。
理解这三者的区别,是建立正确安全直觉的基础。很多人在「连接」环节过度紧张,却在「授权」环节掉以轻心,风险判断的方向反了。
一个可以复用的检查清单
每次连接陌生 DApp 前,可以按这个顺序过一遍:
- 域名核查:当前页面的域名和官方域名完全一致吗?是从可信来源进入的吗?
- 合约来源:Rabby 对这个合约有没有风险标注?合约是否经过审计?
- 授权代币:被授权的代币是我预期操作的那个吗?
- 授权额度:是无限授权还是具体数值?我是否需要手动修改?
- 签名内容:我能看懂这个签名在做什么吗?有没有隐藏的 Permit 或全量授权?
- 操作必要性:我真的需要现在做这个操作吗?如果不确定,等一等。
这个清单不需要每次都花很长时间,熟悉之后大概 30 秒可以过完。但这 30 秒可能是你避免一次真实损失的关键。
风险提醒
自托管钱包意味着你对每一笔操作负完全责任。链上交易不可逆,授权一旦给出,在你主动撤销之前始终有效。没有任何工具或习惯可以做到零风险,但系统性的检查习惯可以显著降低你因操作失误或钓鱼攻击造成损失的概率。本文内容仅供参考,不构成任何操作建议。
这篇文章适合谁看
这篇文章适合刚开始使用自托管钱包、对 DApp 交互流程还不熟悉的用户,也适合已经有一定使用经验、但从未系统梳理过安全检查习惯的用户。如果你曾经在不完全理解的情况下点过「确认」,这篇文章值得完整读一遍。
站内延伸阅读建议
- 什么是代币授权(Token Approval):机制解释与撤销方法
- 自托管钱包入门:私钥、助记词和你真正拥有的是什么
- 钓鱼攻击识别指南:Web3 用户最常踩的几类陷阱
- 硬件钱包与软件钱包的安全边界在哪里
站内延伸阅读
常见问题
以下为可见 FAQ,与 FAQPage 结构化数据一致。
- Rabby 和 MetaMask 在安全提示上有什么区别?
- Rabby 在签名和授权环节会主动解析交易内容,用人类可读的语言显示你即将授权的操作,而不是只展示原始十六进制数据。这让用户更容易发现异常,但核心检查逻辑是相通的,方法可以迁移到任何 EVM 钱包。
- 我已经连接了一个 DApp,但还没有签名,资产会有风险吗?
- 仅连接(Connect)本身不会转移资产,但连接后如果你签署了授权(Approve)或特定签名请求,风险就会实质发生。连接是入口,签名才是真正的风险节点。
- 花费上限设置成多少合适?
- 没有统一答案,但通用原则是:只授权你本次操作实际需要的金额,不要无限授权。很多 DApp 默认请求无限额度(Unlimited),你可以在 Rabby 的授权确认界面手动修改为具体数值。
- 如果我已经给一个可疑合约授权了,现在怎么办?
- 立刻使用 Rabby 内置的授权管理功能,或通过 Revoke.cash 等工具撤销该合约的授权。撤销本身需要支付一笔 Gas,但这笔费用远低于资产被盗的损失。撤销后,该合约将无法再动用你的代币。
- 阅读时需要注意什么?
- 自托管钱包的资产由你本人完全掌控,同时也意味着一旦授权或签名出错,没有任何机构可以帮你撤销交易或追回资产。本文所有内容仅供教育参考,不构成任何投资或操作建议。链上操作前请独立判断,谨慎确认每一步。
