Web3 安全高

為什麼代幣無限授權很危險

無限授權讓 spender 合約在不需每次重新取得額度的情況下,轉出該代幣至極高上限。

代幣無限授權風險與撤銷決策流程

無限授權讓 spender 合約在不必每次重新取得額度的情況下,把指定代幣轉出至極高上限。它不會立刻移動資產,但若 spender 惡意、遭入侵或被不安全升級,日後回到地址的餘額也可能被取走。

逐步處理#

  1. 檢查 spender 地址,而不只看應用程式名稱。 從獨立官方文件核對完整網域、合約地址與所在網路,名稱與圖示都可能被仿冒。
  2. 介面允許時,只授權本次需要的精確金額。 在資產控制權改變前確認 token、spender、額度與期限,無法解釋就拒絕。
  3. 使用餘額受限的互動錢包。 把長期儲蓄與日常 Web3 操作分開,即使判斷錯誤也能限制最大損失。
  4. 一次性活動結束後重新檢查額度。 中斷網站連線不會改變鏈上 allowance,應從已驗證的瀏覽器或授權工具查核。
  5. 在每條使用過的鏈撤銷過期權限。 逐筆閱讀撤銷交易並等待鏈上確認,再檢查額度是否歸零或已移除。

核心原理#

Approval 是 token、owner、spender 與網路的組合。便利性不只存在於單次兌換期間;應用程式日後可能升級、管理金鑰可能外洩,前端也可能遭入侵。移走代幣、中斷網站連線或變更 App 密碼都不會刪除鏈上額度,之後回到地址的同一代幣仍可能暴露。

何時停止或改變做法#

撤銷介面要求轉帳、所有權變更或新的 approval 時,應立即拒絕。有限額度可能增加重複授權的 Gas 成本,卻能限制最大曝險並提供再次核對 spender 的時機。若助記詞或簽署器已受害,單純撤銷不足以建立新安全邊界,必須遷移資產。

必須注意的失敗模式#

  • 認為餘額為零就代表授權消失。 額度仍留在鏈上,未來重新收到同一代幣時可能立即暴露。
  • 只中斷 dapp 連線。 這只清除本機工作階段,不能撤銷智慧合約中的 allowance。
  • 把最大額度授給未驗證的路由合約。 代幣名稱與品牌可被仿冒,必須核對正確合約與 spender。
  • 透過假工具批次簽署撤銷。 不閱讀每一筆交易可能反而建立新授權、轉出資產或更改所有權。

應保存的證據#

不要只因工具顯示「已撤銷」就認定完成。應以鏈上交易狀態與重新查詢的實際額度確認,而且每條使用過的鏈都要分別檢查。

檢查點證據停止條件
核對 token 與 spender官方合約及 explorer地址無法驗證
撤銷額度已確認鏈上交易交易要求轉出資產
重新檢查額度為零或移除同一 spender 仍有其他權限

保存交易雜湊、官方合約地址與檢查日期即可,不要把助記詞、私鑰、密碼或驗證碼放進任何紀錄。

常見問題#

無限授權能花掉其他代幣嗎?

一般只限特定代幣合約,但同一 spender 可能另有其他代幣或 NFT 權限。

Approval 會自動到期嗎?

標準 ERC-20 額度通常不會,除非合約或 permit 設計另有期限。

Permit2 一定是無限授權嗎?

不一定。它支援不同額度與期限;仍需核對實際 token、spender、金額及到期時間。

相關指南#

參考資料#

風險提示: 撤銷只能阻止特定權限未來支出,不能追回已完成轉帳或修復外洩助記詞。

編輯標準

本文以教育與可靠來源為基礎。安全措施、交易所規則及法律要求可能變動,採取重要操作前請透過相關官方管道核實。