一條用了幾年的錢包地址,往往同時連着多個去中心化應用、幾條 L2、一些說不清楚的委託合約,還有幾個早已忘記名字的網站。多數人記得定期改密碼,卻很少回頭看自己當年按過幾次「批准」。授權最麻煩的地方在於:它一次成立,之後長期有效,而且不會因為關閉網站或瀏覽器而自動失效。
授權在鏈上留下的是一張長期通行證
錢包連接視窗關掉之後,鏈上的授權紀錄並不會消失。ERC-20 代幣的 approve 會在合約裡寫下一行資料:哪個地址(owner)允許哪個合約(spender)動用多少數量(allowance)。這行資料會一直留在鏈上,直到被主動修改為 0,或者該合約因遷移等原因廢棄。
不少錢包與前端介面預設為「無限額度」(Unlimited Allowance),理由是避免每筆交易重複批准。這種便利的代價,是把代幣餘額的處置權長期交給目標合約。若該合約存在可升級後門、管理員權限外洩或出現安全漏洞,資產可能在完全沒有主動操作的情況下被轉走。
NFT 走的是另一套機制:setApprovalForAll。這種授權覆蓋整個合約系列,在平台按一次確認,就等於把該系列所有 NFT 的轉移權交給特定 operator。即使當前持有的 NFT 全部售出,授權狀態依然存在;日後若有同系列資產轉入該地址,舊授權會立即重新生效。
簽名式授權則把機制推到另一層面。EIP-2612 的 permit 允許離線簽署訊息來授權額度。簽名本身不上鏈且不耗 gas,但任何取得該簽名的人都能提交上鏈執行。根據 EIP-2612 官方規範,permit 包含 owner、spender、value、deadline 等參數;若簽名時未注意過長的過期時間(deadline),該授權可能在很久之後被惡意提交。
Uniswap 的 Permit2 機制先進行一次常規合約批准,之後每次交易改用簽名授權單筆轉帳。雖然單次簽名具備期限與額度,但若介面殘留了對 Permit2 合約的無限批准,且用戶簽署了超長有效期的轉帳簽名,仍存在被濫用的空間。
EIP-7702 隨以太坊升級進入主網,允許一般錢包(EOA)簽署委託,將地址執行權暫時委託給指定的合約代碼,詳情可參閱 EIP-7702 官方規範。這為批次交易和代付 gas 帶來便利,但也帶來新威脅:一份偽裝的委託簽名能讓錢包掛上攻擊者的代碼邏輯,攔截轉入資產。解除此類委託需要重新發送指向空地址的委託交易進行覆蓋。
| 授權類型 | 觸發方式 | 主要風險特徵 | 撤銷/重置方式 |
|---|---|---|---|
| ERC-20 approve | 錢包內確認「批准」交易 | 常見預設無限額度、長期有效 | 發送交易將 approve 設為 0,或使用撤銷工具 |
| NFT setApprovalForAll | 交易平台按一次確認 | 覆蓋整個合約系列,與當前持有數量無關 | 發送交易將 operator 權限設回 false |
| EIP-2612 permit | 離線簽署結構化訊息 | 簽名已具備效力但鏈上尚無紀錄,過期時間過長易被忽視 | 若已上鏈執行則 approve 歸零;未上鏈可先移走資產或等過期 |
| Permit2 | 批准底層合約後逐次簽名 | 合約長期批准殘留、單筆簽名過期時間過長 | 撤銷 Permit2 合約批准,或透過支援介面執行 lockdown |
| EIP-7702 委託 | 簽署專屬授權委託 | 地址執行邏輯被惡意代碼接管,後續資產可能被攔截 | 重新簽署並發送指向空地址的委託交易覆蓋 |
連接錢包與簽署授權屬於兩個不同層次
點擊「連接錢包」(Connect Wallet)通常只是向網站提供公開錢包地址,讓前端讀取餘額或歷史紀錄,並建立發送請求的通訊通道。這一步驟本身不會轉移資產,也不會批准代幣額度。

真正牽涉資產權限的是後續的簽名與鏈上交易:
- 標準鏈上交易:需要消耗 gas 並廣播至區塊鏈,錢包會顯示明確的互動合約、金額與呼叫函數。
- 訊息簽名(如 personal_sign):不耗 gas 且不上鏈,主要用於驗證地址擁有權或登入系統。
- 結構化資料簽名(eth_signTypedData_v4):用於 permit 或 Permit2 等標準,錢包能解析出資產、授權對象與期限等具體欄位。
- EIP-7702 授權簽名:屬於特定規格的授權格式,現代錢包通常會彈出專門的「委託授權」警告視窗。
此外,透過 WalletConnect 連線時,產生的 session 在部分環境下可能維持數天。離開不熟悉的網站後,主動在錢包的連線管理中中斷連線(Disconnect),能避免背景通道持續收到惡意請求。
出現以下跡象,先把頁面關掉
- 隱藏或模糊額度:介面要求授權卻未清楚顯示授權額度數字。
- 預設超大額度:只是進行小額兌換,錢包卻彈出無限符號或極大授權數量。
- 偽造網址與搜尋廣告:域名夾雜微小錯拼、非官方後綴,或直接來自搜尋引擎的贊助廣告。
- 驗證名義索取權限:宣稱領取空投、重啟帳號或修復節點前,必須先進行「錢包驗證簽名」。
- 不透明簽名請求:彈出的簽名內容為未解析的十六進位字串,或使用已淘汰的 eth_sign。
- 模擬結果異常:錢包內建的交易模擬顯示資產即將淨流出,而非預期的互動結果。
- 超長有效期限:簽名視窗內的過期時間被設定為數月甚至數年之後。
- 社群主動私訊:在 Telegram、Discord 或社交平台收到聲稱「協助撤銷授權」或「客服引導」的外部連結。
- 製造緊迫感:頁面設置倒數計時器或名額限制,催促快速確認。
- 未知網絡請求:錢包突然彈出切換至陌生鏈或未曾使用過網絡的交易請求。
搜尋「取消授權」時的防護要點
當懷疑錢包存在風險時,搜尋撤銷工具的過程本身也需提高警惕。部分釣魚網站會購買搜尋引擎關鍵字,仿冒知名工具介面。若在假冒網站上點擊「Revoke」,彈出的可能並非額度歸零交易,而是一筆全新的惡意轉移或無限授權。
防範此類釣魚的核心做法:
- 將常用的授權檢查工具(如主流區塊瀏覽器或安全工具)加入書籤,避免從不明搜尋結果進入。
- 在錢包彈出確認視窗時,仔細核對呼叫的函數是否為 approve(spender, 0),確認授權額度確實修改為 0。
- 拒絕任何第三方私訊提供的所謂「授權修復」或「一鍵清理」專用短連結。
香港虛擬資產監管環境與自託管要點
香港自 2023 年 6 月起落實虛擬資產交易平台發牌制度,規定在港營運或向香港投資者推廣的中心化平台須獲證監會發牌;其後《穩定幣條例》亦已立法生效並落實發牌監管,場外交易與託管服務的監管架構亦在持續推進,具體以香港證監會及金融管理局最新公布為準。
在資產管理策略上,持牌中心化平台與鏈上自託管錢包各有不同的風險面向:
- 持牌交易平台:由機構進行合規託管與審查,需留意平台的運作條款與法規邊界,投資者可透過 證監會虛擬資產交易平台名單 核實平台持牌狀態。
- 自託管錢包:用戶全權掌握私鑰,消除了平台託管風險,但必須完全自行承擔合約授權、簽名辨識與私鑰保管的安全責任。
撤銷授權的實際操作步驟
撤銷授權的本質是發送一筆鏈上交易,將合約的 allowance 設為 0,或將 NFT operator 設為 false。該操作需要消耗該網絡的原生 gas 費用。

- 確認目標網絡:各區塊鏈(如 Ethereum、Arbitrum、Base、BNB Chain 等)的授權各自獨立,需在對應網絡逐一檢查。
- 連接合規工具:透過官方書籤進入安全工具(如 revoke.cash 或各鏈區塊瀏覽器的 Token Approvals 頁面),連接需要整理的地址。
- 篩選高風險項目:優先檢查陌生合約、久未使用的 DApp 以及標記為「無限額度」的代幣授權。
- 發送撤銷交易:在普通 EOA 錢包中逐筆發送撤銷請求,確認交易內容為將額度歸零。
- 覆核鏈上狀態:交易確認後,重新整理清單確認該代幣對應合約的額度已顯示為 0。
| 檢查/撤銷途徑 | 適用範圍 | 特點與建議 |
|---|---|---|
| 第三方專用工具(如 revoke.cash) | 多主流網絡、ERC-20 及 NFT | 支援網絡廣泛,直觀顯示風險等級與額度 |
| 區塊瀏覽器(Token Approvals) | 單一專屬網絡(如 Etherscan) | 數據直接來源於區塊鏈節點,適合單鏈深入核對 |
| 錢包內建管理模組 | 依錢包客戶端支援範圍為準 | 操作路徑短,適合在日常轉帳時隨手檢查 |
以錢包分工建立防禦架構
單純依賴即時辨識合約名稱容易疏漏,建立清晰的錢包隔離結構能從架構上限制潛在損失上限:
- 冷錢包/儲蓄錢包:存放長期持有的大額資產,不與未經審計或不熟悉的合約交互,盡量避免日常授權。
- 日常操作錢包:存放適量週轉資金,用於常規 DeFi 交易,手動將授權額度修改為當次所需數量。
- 高風險/交互錢包:專門用於參與新項目測試、領取未知空投,僅存放所需 gas,隨用隨清。
- 硬體設備驗證:使用硬體錢包時應仔細核對螢幕上的接收地址、呼叫函數與額度,盡量避免開啟不具備解析能力的盲簽(Blind Signing)。
常見問題(FAQ)
單純連接錢包(Connect Wallet),資產會被直接轉走嗎?
單純連接錢包只會向網站提供公開地址與建立通訊通道,不會觸發資產扣除或合約授權。資產變動必然伴隨後續的簽名或交易確認。然而,維持連線可能持續收到惡意交互請求,使用完畢後主動中斷連線是良好的安全習慣。
撤銷一筆鏈上授權需要支付費用嗎?
需要。撤銷授權屬於鏈上寫入操作(將額度變更為 0),必須支付該網絡的 gas 費用。在以太坊 L2 或其他低手續費公鏈上,成本通常非常低廉;在主網高峰期則取決於當時的網絡擁塞程度。
已經把 NFT 賣出或轉出,還需要撤銷 setApprovalForAll 嗎?
需要。setApprovalForAll 授權的是該合約系列在該地址下的全局操作權限,並非針對單一特定代幣 ID。若日後該地址再次接收同系列的 NFT,未撤銷的舊授權將立即具備調用權限。
離線簽署的 permit 簽名,可以透過撤銷工具清除嗎?
若該 permit 尚未被任何人廣播提交上鏈,鏈上尚未產生 allowance 紀錄,撤銷工具無法直接將其清除。最有效的應對方式是立即將該代幣轉移至新地址,使離線簽名失去可調用的資產對象;若簽名已被提交並在鏈上生效,則可透過常規方式發送交易將額度歸零。
使用硬體錢包是否就能完全免疫授權風險?
不能。硬體錢包的作用是保護私鑰不離開離線環境,並在物理螢幕上展示待簽署數據。如果用戶在硬體螢幕上確認了一筆惡意的無限授權或惡意合約委託,鏈上資產依然會面臨損失風險,核心防線仍在於確認簽署內容的真實意圖。
