安全

"断开连接"和"撤销授权"不是一回事:测试网收尾怎么查/撤

"断开连接"和"撤销授权"不是一回事:测试网收尾怎么查/撤

假设你做完一次测试网任务,在钱包里断开了项目站点,却仍看见一条代币授权。这不一定意味着资产已被盗,也不说明按钮无效:站点会话与链上权限是两份记录。下面从这个假设出发,先找准网络、资产和获授权对象,再决定撤哪一项、怎样用交易回执和状态读数复核。X、Discord、GitHub 的第三方应用授权另行处理。

断开站点后,为什么还要查权限

假设案例:小林在一条 EVM 测试网上用独立钱包完成任务,随后从钱包的已连接站点列表断开项目。回看同一钱包地址时,他发现某代币对一个 spender 仍有额度。正确结论只是“该网络、该代币、该 spender 的 allowance 可能尚未清理”,并非整钱包已被控制。接下来应记录网络、钱包地址、代币合约、spender 地址和额度,先核对当时批准的是不是这一项,再决定是否撤销。

如果小林在同一地址的主网上还持有资产,测试网 allowance 不会因此自动成为主网 allowance;同一地址也不能替代网络字段。反过来,若他曾在主网单独批准过相同名称的代币,也不能因测试网已撤销就宣布主网安全。测试币和主网币的名称相似,合约地址、网络和授权状态仍须分别看。任务结束后可按任务记录里的网络与交易哈希回溯交互,而不是只凭项目页面的“完成”提示。

授权给合约的额度可能在页面断开后继续存在,但“曾授权”不等于“必然被盗”。把这篇文章当成逐项清理方法,而不是所有风险的一键修复;已转出的资产、泄露的密钥、订单或质押状态不受同一笔撤销交易自动处理。

先分开:断开连接与撤销链上权限

钱包的 Connected Sites 或 Connected Apps 是会话列表。断开后,网站通常失去当前连接权限;这一步不会改写 ERC-20 allowance、NFT 授权或 Solana token account 的 delegate 字段。反过来,只撤一条链上授权也不会自动退出项目网页、解除登录会话或删除 OAuth 应用。移动端若找不到连接记录,可参考移动端连接管理,这里不重复扫码流程。

你做的操作改变了什么仍须单独核对
钱包里断开站点当前站点会话各网络链上权限、项目登录状态
对目标权限发起链上 Revoke指定代币或账户的指定权限其他代币、spender、NFT、签名和会话
项目或社交平台取消应用访问对应账户的会话或 OAuth 授权钱包链上状态

不能根据按钮叫 Revoke 就断定操作属于同一种模型。EVM 常见的是把某代币对 spender 的额度设为零,或取消 NFT operator;Solana 普通 Token Program 的 Revoke 则清除某个 token account 的 delegate。它们的目标对象、签名者和复核字段都不同。MetaMask 的说明也明确把断开 dapp 与撤销 token allowance 区分开。

确定权限对象:别只看应用名

先把“这项权限是谁授予谁、针对什么资产、在哪条网络”写成一句可核对的话。ERC-20 allowance 的最小对象是 owner 钱包地址、代币合约、spender 与网络;只知道项目名或显示的代币符号不够。授权查看器的列表方便发现线索,但工具可能只支持若干网络、代币类型或合约机制,列表为空和“所有已授权合约均已列出”不是一回事。必要时在该网络的可信浏览器读目标合约状态,并对照自己的签名或交易记录。

NFT 要分两个层次:ERC-721 的单枚 getApproved(tokenId) 针对一个 token ID;集合级 isApprovedForAll(owner, operator) 针对 operator。若只清集合级开关,不代表某一枚单独批准已不存在;若只取消单枚,也不代表集合 operator 已关闭。不同标准和交易市场的订单规则可能另有状态,不能把“取消 NFT approval”说成“所有挂单都撤了”。签名类型指南帮助先辨认钱包里出现的是 approve、permit 还是 operator 请求。

ERC-2612 permit 是签名授权:符合该机制的签名可以由他人提交,修改链上的 allowance。其 nonce 与 deadline 是规范中的有效性条件;若一份尚未使用的 permit 仍有效,单独执行 approve(0) 不会自动使它失效,之后提交仍可能重新写入额度。也不能告诉读者“等到过期就安全”:在状态未查清时不要继续依赖该钱包。Permit2、NFT 订单与其他签名机制有各自规则,此处不把 ERC-2612 的 nonce 操作硬套给它们。具体辨识应查看原签名内容、对应协议机制与最新链上状态,不确定时停止签新消息;permit 状态查不清时,最直接的办法是把该代币转到另一个安全地址,让这份签名无币可动。ERC-2612 规范可核对该标准本身,不等于每个应用都实现它。

Solana 需要写明具体 token account、mint、delegate 与 delegated amount。普通 delegate 与 owner、close、mint、freeze 等 authority 不是同一权限。Token-2022 扩展还可能出现不在这篇普通 Revoke 流程内的机制;看不懂时不要为了“彻底清理”随意改 owner、close、mint、freeze 权或关闭 token account。

建立待清理清单,先查后连

以小林的假设案例继续:他先从自己的任务记录找网络和钱包地址,用地址在对应网络的浏览器或授权查看器做只读搜索,不急着连接新工具。对每一条候选记录,记下代币合约和符号、spender 或 operator 的完整地址、目前额度或布尔状态、是否仍在使用、来源交易哈希。名字和标签只是线索,不能代替完整地址;一条无法对应的授权先标成“待核对”,不要擅自认作恶意或安全。

跨链时逐条核对网络。Ethereum、BNB Chain、Arbitrum 的界面可能相似,状态不会因为一处清零自动同步。也不要因为同一个 EVM 地址用了独立测试网,就推断主网上有相同额度。检查范围应由实际交互记录与持有资产决定;公开工具没有覆盖某链或某类权限时,应明确保留“未验证”,寻找该机制的可信读取方式,不向读者保证任何单一工具完整覆盖。

对于同一应用仍有订单、自动扣款、LP 或 staking 操作的情况,先弄清撤销这条 spender 权限会不会使下一次操作需要重新授权。撤销既不是退款,也不会自动退出仓位或取消订单。没有把握时先保存权限和协议状态,避免盲目点击批量选项;但若出现持续陌生转账,不应为了保留正常操作而继续签名。

先处理哪一项:围绕对象而非项目名排序

小林发现两条记录:一条是任务中用过、额度很小的测试代币 spender;另一条是他不认识的主网 spender,额度足以覆盖重要余额。他应先核对第二条的来源与当前状态,同时停止给陌生站点签名。优先级来自可触及的资产、额度或 operator 范围、对象是否可解释,以及是否仍有合法用途,并不来自“有没有 verified 标签”。标签缺失不是攻击证据,已验证代码也不是继续保留无限额度的理由。

若订单或协议需要该权限,先查看项目的真实状态与取消规则,再决定撤权限与订单各如何处理。临时撤错合法额度,通常可在确认项目域名、网络、代币和 spender 后按实际需要重新授权,但这意味着新的一次风险决策,不宜直接批准无限额度。小额授权也不是零风险,风险和余额、协议行为及未来入账一起变化。

EVM:对一条目标授权操作,并用状态复核

以 Ethereum 主网为例,可从 MetaMask 撤销授权说明的“How do I revoke approvals?”段进入 Etherscan 的 Token Approval Checker。先输入公开钱包地址做只读查询,选择需要核对的 ERC-20 或 NFT 类型;确认网络与目标后,才连接同一钱包做单项 Revoke,并按下面步骤看回执和状态。这个入口不代表覆盖你用过的每条测试网;测试网须找该网络支持的查看方式,没有覆盖时记为“未核实”。

  1. 选择精确目标。小林把网络、owner、代币合约、spender 与当前 allowance 并排核对;NFT 则改为 token ID 的单枚批准或 owner/operator 的集合批准。确认不再需要后,才到该网络的可信授权界面或钱包支持的功能寻找相应撤销动作。
  2. 读钱包确认页。看网络、调用的代币或 NFT 合约、目标 spender/operator、动作及费用估算。不熟悉的交易或要求转币到“清理地址”的页面,不靠按钮颜色或文案判断。任何要求输入助记词、私钥、验证码的页面都应停止。这里只描述对象核对,具体界面可能变。
  3. 保存交易哈希并等回执。钱包或网页显示 Submitted 只表示已送出或正在处理,不是链上成功。用正确网络的浏览器查看哈希、状态和目标合约;交易哈希指南可解释 Pending、Success、Failed 等状态。
  4. 重新只读读目标状态。ERC-20 的该 owner、代币、spender 组合 allowance 应为 0;集合级 NFT operator 应为 false;单枚 NFT 则核对 getApproved(tokenId) 不再指向原对象。仅有 Success 仍要查最终读数。若未改变,先检查网络、交易是否失败、是否看错对象或状态是否更新,不要连续重复签名。
MetaMask 官方说明把断开 dapp 与撤销 token allowance 区分开
这是 MetaMask 说明页的资料截图,不是任何用户钱包的操作回执。来源:MetaMask 官方帮助;截图于 2026-09-02 获取,界面可能更新。

需要发链上交易时,钱包会显示当前网络的费用估算,通常须由该网络原生资产支付。费用不是固定美元金额,发送前看钱包确认页的估算,发送后看回执里的实际扣费;可用Gas 字段指南读估算与实际扣费。若钱包已出现持续盗转或密钥泄露迹象,不要为了撤销而反复向旧钱包充值 Gas,先停止操作,按下文授权已被盗用或助记词泄露一节的顺序处理。

读数为 0 只说明这一条 allowance 当时为 0,不表示钱包所有权限已安全。尤其要把尚可能使用的签名授权留在“未排除”栏:ERC-2612 的未用 permit 可能后来写回 allowance,其他签名与订单要按各自机制确认。

Solana:普通 token account delegate 的 Revoke

有人搜索 solana revoke approval 时,可能把不同撤权操作混称在一起;本节只讨论普通 token account delegate。

如果小林还用过 Solana 测试账户,他不能把 EVM spender 列表或 Solscan 的 Token Accounts 当作钱包的 Connected Apps。前者是链上代币账户线索,后者应在钱包自己的会话管理里查。先确认 Solana 网络、钱包地址、mint 与目标 token account,再读该账户当前 delegate 和 delegated amount;同一个 mint 若有多个 token account,各自独立核对。

Solana 官方的Revoke Delegate 文档说明普通 Revoke 指令清除源 token account 的当前 delegate,并把 delegated amount 归零;前 delegate 对该账户的普通转移或销毁权限随之移除。在普通 Token Program 中由 token account owner 签署;Token Extension Program 的现任 delegate 也可撤销这项委托。这仍只是某个账户的 delegate 清理,不是清除钱包全部 authority、其他 token account、扩展权限或网站会话。完整文档另有开发者代码;这里的截图只展示官方机制说明,不是钱包内可直接点击的撤销界面,也不是用户钱包结果。

Solana 官方 Revoke Delegate 文档说明清除 token account 的 delegate 并把 delegated amount 归零
Solana 官方机制说明页截图,不是用户交易回执,也不是钱包内可直接点击的撤销界面。 Solana Docs

如果所用钱包或可信工具确实提供与该账户和该 Token Program 匹配的撤销操作,先核对目标 token account、网络、指令与签名者,再签这一笔;未能辨认目标时不要操作。保存交易 signature,等待链上状态明确后重新读取同一个 token account,确认 delegate 被清除且 delegated amount 为 0。仅见 Submitted、只有截图或列表暂时为空,都不足以判定完成。普通 delegate 之外的 Token-2022 扩展和 authority 变化另有机制,本文不声称已覆盖全部。

不要为“清空风险”顺手修改 owner、close、mint 或 freeze authority,更不要随意关闭 token account;这些动作可影响控制权或余额处理,和普通 Revoke 的目的不同。账户字段看不懂时保留记录并停在只读核对,不盲签陌生工具。

撤销授权用什么工具?各链入口与没有 Gas 时的办法

下面是 2026 年 9 月查到的情况:

  • Ethereum、BNB Chain、Arbitrum、Base 等 EVM 链:Revoke.cash 支持 100 多条 EVM 主网和少量测试网。先在搜索框粘贴钱包地址只读查看,并选对网络;真要撤销时再连接同一个钱包,点那一行的 Revoke。逐条撤销只付该网络的 Gas,批量撤销对免费用户收 1.50 美元。
  • 区块浏览器自带的页面:Ethereum 用 Etherscan 的 Token Approvals,BNB Smart Chain 用 BscScan 的同名页面。Connect Wallet 后会列出 ERC-20 与 NFT 授权,勾选后点 Revoke Selected Approvals;也可以手动填代币合约地址和 spender 地址,只撤一条。
  • 测试网:Revoke.cash 的 FAQ 写明测试网代币没有价值,一般不必撤销。要先查的是同一地址在主网上有没有授权,那里才是可能被盗的钱。
  • Solana:Revoke.cash 不支持 Solana。Solana 没有一张“授权列表”,要逐个看 token account:在 Solana 区块浏览器里打开具体的 token account 地址(不是钱包主地址),看 delegate 和 delegated amount;delegate 不为空,就说明还有别人能动这个账户里的币。会用命令行的,可由 owner 执行 spl-token revoke <token account 地址> 撤销。

钱包里没有原生币付 Gas 怎么办?撤销是一笔链上交易,Ethereum 上要 ETH,BNB Chain 上要 BNB,没有就发不出去。

  • 助记词没泄露、只是签过可疑授权:从你自己的交易所账户或另一个自己的钱包,转一小笔原生币到这个地址(够两三笔交易即可),再撤销。从交易所提币时选对网络,例如往 BNB Chain 地址提 BNB 要选 BNB Smart Chain(有的交易所写作 BEP20 或 BSC)。
  • 转进去的币几秒内就被转走:问题不在 Gas,而是钱包已被别人控制。别再充值,按下一节换新钱包。
  • 有人私信说“我帮你垫 Gas 抢救资产”:助记词和私钥不交给任何人,这类私信本身就是骗局入口。

最后处理平台会话与第三方应用

链上目标权限核对后,再到钱包的已连接站点列表移除不再使用的会话;项目网页登录状态也在项目自己的账户设置里确认。X、Discord、GitHub 的 OAuth 应用属于社交账户权限,不是 ERC-20 allowance。它们可能读取资料或执行获准的账户动作,各平台的授权页会逐项列出这些范围。

X 可在安全与账户访问下寻找 Apps and sessions、Connected apps;Discord 在用户设置的 Authorized Apps;GitHub 是点右上角头像 → Settings → 左侧 Integrations 下的 Applications → Authorized OAuth Apps 标签,在应用旁的 ⋯ 菜单里选 Revoke(2026 年 9 月按 GitHub 文档核对)。要撤销的如果是 GitHub 上给第三方 App 的授权,就在这里操作,和钱包授权无关。界面路径会改,先从平台官方设置入口进入,不从测试任务私信里的“清理链接”跳转。逐项看应用名称、授予范围和最近使用情况;确认不再需要才取消,随后检查登录设备、密码与 2FA。若平台显示没有应用,只能说明那个平台当前列表无可见项,不能推出钱包链上权限也为空。

授权已被盗用或助记词泄露:先撤销还是先转移?

先判断你属于哪一种,处理顺序不一样:

  1. 只签了可疑的 approve 或 permit,助记词和私钥没有输到任何地方:先撤掉那一条授权(工具见上一节),撤完用浏览器复查读数为 0。如果看到这个代币正在被一笔笔转走,先把剩下的这种代币转到你另一个安全地址,再撤——转走余额比等撤销交易确认更快。签过的 permit 或 Permit2 签名如果还没被提交,把对应代币转出旧地址,同样能让它无币可动。
  2. 在网页、表单或“客服”那里输过助记词或私钥,或者装过来路不明的插件、远程控制软件:这时撤销没有意义,对方可以直接签名。按 MetaMask 帮助中心给的顺序做:在另一个浏览器或新的浏览器配置文件里(手机则换一台设备)新建钱包,把新助记词抄在纸上;把旧钱包剩下的资产转到新地址,先转代币,最后转原生币,因为转代币也要用原生币付 Gas;之后旧助记词下的所有账户一律停用。
  3. 转进去付 Gas 的币几秒内就消失:这是自动清扫脚本(sweeper bot)。Revoke.cash 和 MetaMask 的帮助页都说明,这代表助记词或私钥已经泄露。别再往里充值,这个钱包救不回来了。
  4. 币已经被转走:区块链交易无法撤回,钱包、Revoke.cash 和任何“追回服务”都不能把它拉回来,ethereum.org 与 MetaMask 都写得很明确。现在能做的是保全证据、报案,资金进了交易所的话通知那家交易所。

报案要带什么:被盗交易的哈希(TxID)、你的钱包地址、收款地址、你签名或输入信息的那个网址、钱包弹窗和聊天记录截图(不含助记词),以及按时间排好的经过。攻击者地址可以提交到 Chainabuse,也可以在 Etherscan 地址页的 More Info → Report/Flag Address 标记。再带着这些材料向你所在地警方的网络犯罪报案渠道报案。如果链上记录显示资金进了某家交易所的充值地址,只通过这家交易所官网或 App 里的客服入口提交工单,附上 TxID 和报案回执。能不能冻结,要看你通知得多快、交易所自己怎么审核,没有保证。

说能“帮你追回”的人,多半是第二轮骗局:主动私信你、要你先付手续费或“解冻费”、索要助记词或让你装远程软件、保证一定追回、自称和警方或外国执法机构合作,只要沾上一条就停止联系。美国 FBI 的 IC3 在 2024 年和 2025 年都专门发过公告,提醒冒充律所和“追回机构”的人专挑加密诈骗受害者下手。社交账户受影响时,按平台流程移除第三方访问、检查登录设备、换密码并开启 2FA。

常见问题

测试网授权会自动授权主网吗?

不会。网络与代币合约状态须分别核对;相同钱包地址、代币名称或测试任务记录都不能证明主网也有或没有同一额度。

列表为空,是否说明所有授权已清除?

不能。查看器可能只覆盖部分网络、代币或机制。先确认查询的地址与网络,再对照交互记录和目标合约状态;未覆盖的权项保留为未验证。

撤销需要 Gas 吗,撤错了怎么办?

需要。撤销是一笔链上交易,用该网络的原生币付费,预估金额在钱包确认页,实际扣费看交易回执。合法权限若误撤,确认项目、网络、代币和获授权对象后按需要重新授权,这次只填本次要用的额度,不必选无限;撤销不会自动退出仓位或取消订单。

approve(0) 能让未用 permit 失效吗?

不能据此保证。ERC-2612 的未用且仍有效签名可能随后被提交并改写 allowance;其 nonce、deadline 与提交状态须按该机制核对,Permit2 和 NFT 订单不能套用同一规则。

钱包里没有 ETH 或 BNB,还能撤销授权吗?

不能。撤销是一笔链上交易,必须用该网络的原生币付 Gas。助记词没泄露时,从你自己的交易所账户或另一个钱包转一小笔原生币进来再撤;如果转进去的币马上被转走,说明助记词或私钥已泄露,别再充值,改为新建钱包转移剩余资产。

Solana 的授权在哪里看、用什么撤销?

Revoke.cash 不支持 Solana。在 Solana 区块浏览器打开具体的 token account,看 delegate 和 delegated amount 两个字段。撤销由该 token account 的 owner 签一笔 Revoke 交易;会用命令行的可以用 spl-token revoke。

撤销授权能把被转走的币拿回来吗?

不能。撤销只能阻止以后的转账,已经上链的转账无法撤回。带上 TxID、相关地址和截图去报案;主动找上门、要求先付费才能“追回”的人,基本可以认定是骗子。

查证资料