防詐詞條 · 錢包安全 · 簽名釣魚

簽名釣魚:錢包叫你「簽個名」,先看懂它要你交出什麼

錢包彈出一個「簽名」視窗,不用付 gas、也沒寫要轉多少幣,看起來像隨手點個確認就過——簽名釣魚最好用的地方,正是這種「什麼都沒發生」的錯覺。有些簽名確實只是登入,有些卻是一張授權書:一按下去,對方就拿到日後把你的幣搬走的權力,而當下鏈上什麼都看不到。這篇教你在按確認之前,逐行看懂那個視窗:哪個是純登入、哪個是 permit 授權、哪個是連錢包都解不出來的盲簽。也講一件很多人不知道、而且會害死人的事:簽錯之後跑去查授權,你多半會查到一片乾淨——但那不代表沒事。

簽名釣魚詞條封面:簽之前,先看懂那個視窗
鏈詐圖鑑 · 簽名釣魚手法標本

錢包冒出一個要你「簽名」的視窗,別因為它不用付 gas、當下沒有任何一筆轉帳,就以為安全。有些簽名只是證明「這個錢包是你的」,簽了不動任何資產;但有些簽名本身就是一份授權——你一簽,等於簽了一張紙,讓對方日後可以把你的代幣搬走,而且簽的當下鏈上完全看不出破綻。所以你要守的不是「這要不要花錢」,是「這張到底寫了什麼」:看不懂它要你批准給誰、動哪種幣、動多少、又是哪個網站在要,就關掉,回到你自己存的官方書籤重走一次。

這篇專講「簽名視窗跳出來、你還沒按確認」的那一刻該怎麼看。至於惡意連結、假 QR 怎麼一步步把你帶到這個視窗前,我們在假 QR Code 掃碼授權盜幣另外拆過;這裡只回答一個問題:視窗已經在你面前了,逐行怎麼讀。

為什麼「簽個名」比「轉一筆帳」更容易中招?

轉帳你其實看得很清楚:收款地址、金額、要付多少 gas,白紙黑字,數字不對你會遲疑。簽名剛好相反,它把最危險的東西藏在「看起來最無害」的外表底下。

差別在三點。第一,不用付 gas:離線簽名不上鏈、不花手續費,你少了「要付錢」這個天然的煞車。第二,當下什麼都沒動:你簽完,錢包餘額一毛沒少,也不會跳出「有一筆錢離開你的帳戶」的提醒,感覺像什麼都沒發生——但那張授權已經交到對方手上,他可以等幾分鐘、也可以等幾天,挑你不注意的時候再一次搬空。第三,它可能根本不是登入:釣魚站最愛把一份授權,包裝成「簽名驗證身分」「簽一下解鎖」,讓你以為在做一件安全的小事。等到你發現幣不見了,往往想不起來自己什麼時候「轉」過——因為你沒轉,你是簽了。

釣魚簽名最常見的三張臉

同一套路數,實際跳出來時常見這三種:

  • permit/Permit2(離線授權簽名)。這是最典型的一種。permit 用一個簽名,代替原本要付 gas 的「授權(approve)」交易,效果一樣是允許某個合約在額度內動用你的代幣,只是改成免費、離線完成。Permit2 則把簽名式額度與一次性轉帳整合到共同合約。釣魚站把它做成「Sign 一下就能領獎/繼續」,你以為簽的是同意書,其實可能簽出提款權。自我定級時要看正確前提:ERC-2612 permit 只對自己實作該標準的代幣有效Permit2 則要求那一種代幣先在鏈上授權給 Permit2 合約。有沒有用過 Uniswap 不是判斷標準,真正要查的是該 token allowance 的 spender 是否為正確的 Permit2 合約。
  • 盲簽:一串你讀不懂的十六進位。視窗裡只有一長串 0x 開頭的亂碼,錢包解不出人話,要你直接「簽署」。你根本不知道自己在同意什麼——背後可能是一筆交易、也可能是一份授權的雜湊。它可能是舊的 eth_sign,也可能是錢包解不開的結構化資料或一段非文字的原始訊息;是哪一種不重要,重要的是你讀不懂。eth_sign 危險到 MetaMask 已在 12.3.0 版把整個方法移除,連設定裡原本那個開關都一併拿掉,其他主流錢包也多半預設封鎖。所以今天還會逼你「去設定裡打開盲簽」的,通常是硬體錢包那一側——這件事下面單獨講。
  • 掛單/授權型簽名被當成「登入」。在 NFT 的世界裡,一個「簽名」可能是一張掛單授權——簽下去可能把 NFT 以近乎零的價格掛出成交。頁面卻只寫「驗證錢包所有權」「簽名進入」,讓你以為只是登入。這類最陰險,因為它借用了登入簽名的正當外衣。它通常還需要一個鏈上前提:相關市場、conduit 或 operator 已經持有有效的 setApprovalForAll 等轉移授權。以前上架過是常見來源,但不是唯一來源;你也可能在別的流程裡給過 operator 授權。沒有相關鏈上轉移權限時,光靠掛單簽名通常不能搬走 NFT。
這三種的共通點:它們都可能不用付 gas,也不會在按下簽名的當下顯示資產轉出;其中 permit、Permit2 或掛單簽名可能交出日後動用資產的權力,盲簽則讓你連內容都無法確認。所以看到「簽名就能領/解鎖/進入」,先停下來,按下面這張表逐欄核對再決定。

簽之前,逐行看懂這個視窗

主流錢包現在對 permit 這類結構化資料(技術上叫 EIP-712)多半會拆成一欄一欄顯示,不再只丟一串亂碼。這代表你有機會在按確認前,自己讀懂它要你批准什麼。下面這張表把一份授權型簽名視窗上,最該逐欄盯的地方攤開來:

視窗上的欄位 大概會寫成 它的意思 危險訊號
請求來源
(網域)
視窗頂端顯示的網址 這份簽名是哪個網站要的——不必懂技術也能當場核對的一欄 與你以為的站不符
類型/方法 Permit、Permit2、Approve;或 signTypedData + primaryType Permit/Approve 是授權訊號;signTypedData 只是 EIP-712 的結構化簽名方法,還要看 primaryType 與欄位 只想登入,卻出現 spender、token、amount、order 或 permit 欄位
被授權對象
(spender)
一串合約地址 這個地址將有權動用你的代幣 陌生、與網站對不上
代幣
(token)
一個代幣名稱或合約地址 對方能動的是哪一種幣 你沒打算動的那顆幣
額度
(value/amount)
一個數字,或極大值、「無限 Unlimited」 對方能動用的上限 無限或天文數字
期限
(deadline)
一個到期時間 這張簽名能被送上鏈的最後期限,不是授權的有效期 短期限也不代表安全
整體可讀性 有清楚欄位 vs 只有一串 0x 亂碼 錢包能不能替你解出人話 只剩 0x=盲簽

其中「期限」這欄最容易被誤讀,值得單獨說清楚:它限的是這張簽名還能不能被拿去上鏈,不是授權能撐多久。一般 permit 只要在期限內被送上鏈,開出來的額度就是永久的,不會自己過期。所以看到期限只剩三十分鐘,別以為「風險只有半小時」——真正的差別只是對方得在半小時內動手而已。(Permit2 另有一個 expiration 欄,那個才是額度的有效期。)

把它濃縮成一句:只要視窗裡湊齊了「一個對象、一種幣、一個數字」,或整個視窗是一串你讀不懂的 0x,就當成「我正要簽一張能動我資產的授權書」。額度寫「無限」的尤其危險,那等於把這種幣的提款權整個開給對方。分不出來是哪一類,就關掉視窗,改從你自己存的官方書籤重走一次——你少領一次獎沒有損失,簽錯一次可能是整個錢包。網址這一欄別跳過,本站的假域名比對器就是用來逐字比對它的。

較可辨識的登入簽名,應該長什麼樣?

很多正常操作確實需要簽名,但「看得懂」只能讓你核對,不能自己證明安全。標準的 Sign-In with Ethereum(SIWE)登入訊息會列出請求網域、錢包地址、URI、版本、chain ID、nonce 與簽發時間,還可能有到期時間和 resources。瀏覽器實際來源必須與訊息裡的 scheme/domain 對得上;URI 是簽名所針對的資源,應另行核對是否符合目前服務預期的值與用途。

登入訊息通常沒有 spender、token、allowance 或額度,不能直接搬動鏈上資產;但外流簽名仍可能被拿去冒充你登入那個平台。反過來,有些看起來像人話的結構化欄位其實是訂單或授權內容,而 signTypedData 只表示 EIP-712 方法,不代表它必然是登入或授權。要一起看來源、用途、primaryType 與實際欄位

只要出現 spender、approve、permit、額度、「無限」、order/listing 欄位,或整個是一串亂碼,就停手。沒有代幣和數量只是必要線索,不是充分保證;請求不是你剛主動發起、網域或用途對不上,一樣不要簽。

硬體錢包,和那個「盲簽」開關

用 Ledger 這類硬體錢包的人,會碰到一個要特別小心的設定:盲簽(blind signing)。當你要簽的是它一時無法完整顯示內容的資料時,裝置會擋下來,要你先到設定裡把「盲簽」打開,才簽得下去。這個開關的意思,等於是「我知道我看不懂,但我還是願意簽」。

騙子最愛的話術就是圍著這個開關轉:「領獎前請先到錢包設定把 blind signing 打開」「交易失敗是因為你沒開盲簽,開了就好」。你一旦照做,等於親手把硬體錢包最後一道防線關掉,讓它對一串你看不懂的東西照簽不誤。

務實的做法:平時讓盲簽保持關閉,優先改用支援 Clear Signing 的官方入口或新版應用。尚未支援解碼的新 DApp 也可能要求盲簽,所以這個提示本身不是釣魚的鐵證;但只要裝置無法清楚顯示內容,風險就很高。除非你能從獨立官方來源核對網址、合約、方法、收款方與金額,而且操作正是你主動發起的,否則不要打開。任何頁面催你開啟盲簽,都應當成高風險紅旗。

已經簽下去了:為什麼你「查授權」會查到一片乾淨

這一節請務必讀完,因為多數人在這一步會做錯,而且錯得毫無自覺。

直覺反應是打開授權查詢工具,看看自己給出過什麼、把可疑的撤掉;但第一步其實是先分清簽名是否已被提交。查看最近鏈上交易、代幣轉移和 allowance:如果對方已經使用簽名,鏈上可能出現新授權或資產轉移,應立即撤銷並搬走剩餘資產;如果查詢結果乾淨,也不能當成安全,因為未使用的離線簽名可能仍在對方手上。Permit2 的 SignatureTransfer 還可能在使用簽名的同一筆交易裡直接轉移,不會留下第二層長期 allowance。

所以第一時間該做的是這三件事:

  • 斷開連線、停止簽任何東西。先切掉對方繼續丟視窗給你的管道。
  • 先處理已上鏈的影響。如果已經出現 allowance,就撤銷相關 spender;如果資產正在流出或你無法判斷,優先把仍有風險的代幣移到全新錢包。不要為了「刷新 nonce」去搜尋陌生 DApp 再簽一次,這可能把一次事故變成第二次。
  • 依實際簽名類型作廢。ERC-2612 permit 綁定代幣自己的 nonce 與 deadline,可由有效的後續 permit 消耗 nonce,但錢包與介面支援不一;Permit2 的 AllowanceTransfer 使用順序 nonce,可由 invalidateNonces 前移,而一次性 SignatureTransfer 使用 unordered nonce bitmap,要用 invalidateUnorderedNonces。兩者都還要檢查並視需要撤銷代幣對 Permit2 的底層 ERC-20 授權。若你無法確定是哪一種,搬移風險資產比自行拼合合約呼叫安全。

至於過去累積下來的舊授權——那些確實躺在鏈上,查詢工具對它們有效,該定期查、該撤就撤。怎麼查、怎麼一條條撤,我們在錢包授權自查與撤銷指南裡一步步寫過。這裡要分清楚的是:鏈上 allowance、尚未使用的離線簽名與已經執行的一次性轉移,是三種不同狀態,不能只看一個「乾淨」畫面就結案。

另外提醒一句:這時候冒出「我能幫你把被騙的錢追回」的私訊或客服,幾乎都是第二層詐騙,趁你慌再收一筆。真正該做的是保留證據——出事時間、對方網址、錢包地址、視窗截圖,以及事後任何一筆可疑轉帳的交易雜湊(hash)——然後照被騙了怎麼辦:先做的 4 件事走,需要報案時這些就是你的材料。別再付錢給陌生人。

編輯室核對紀錄

本篇的欄位對照表與止損步驟,是逐條核對 MetaMask 的簽名釣魚說明與 12.3.0 release、EIP-2612、EIP-712、SIWE 規範、Uniswap Permit2 文件與合約,以及 Ledger 盲簽說明後整理出來的(核對日期 2026-07-27),不是憑印象寫的。

最容易誤判的有兩點。其一,尚未提交的離線簽名不會形成新的鏈上 allowance,所以「我查過了很乾淨」不能證明簽名已失效。其二,Permit2 同時有 AllowanceTransferSignatureTransfer;前者的順序 nonce 與後者的 unordered nonce 作廢方法不同,不能用同一個撤銷按鈕概括。先確認鏈上是否已發生,再依類型處理;不確定時優先保全資產。

常見問題

「登入簽名」和「授權簽名」,怎麼一眼分出來?

標準的 SIWE 登入訊息通常會列出請求網域、錢包地址、URI、chain ID、nonce、簽發時間,可能還有到期時間與 resources。它通常不會出現 spender、token、allowance 或額度,但「沒有代幣和數量」不能單獨證明安全;瀏覽器來源要與訊息的 scheme/domain 對得上,URI 則是簽名所針對的資源,還要核對它是否符合目前服務與用途的預期。signTypedData 只是 EIP-712 的結構化簽名方法,不等於授權;要繼續看 primaryType 與實際欄位。任何來源、用途或欄位對不上,都不要簽。

錢包跳出一串看不懂的十六進位(0x…),要我簽,能簽嗎?

不要簽。你無法在錢包或硬體裝置上確認內容,背後可能是交易、授權、訂單或其他原始資料。MetaMask 已在 12.3.0 版移除 eth_sign;硬體錢包的盲簽也可能出現在尚未支援 Clear Signing 的正規 DApp,因此「要求開盲簽」是高風險紅旗,但不能單靠這一點判定網站必然是釣魚。除非你能從獨立官方來源核對網址、合約、方法、收款方與金額,否則關掉視窗。

我已經簽了一個 permit,現在該做的第一件事是什麼?

先斷開可疑網站並停止對它簽名,接著查看最近鏈上交易、代幣授權與資產是否已被移動。如果惡意簽名已被提交,立即撤銷已生效授權並把剩餘資產移到新錢包;如果查詢結果乾淨,也不能當成安全,因為簽名可能仍未使用。ERC-2612 與 Permit2 的作廢方法不同,不要為了刷新 nonce 去陌生網站再簽一次;無法確定時,搬移風險資產是較穩妥的做法。

我在授權查詢工具裡查過了,乾乾淨淨,是不是就沒事了?

不是。授權工具主要讀鏈上 allowance;尚未提交的 permit 不會顯示,而 Permit2 的一次性 SignatureTransfer 也不會建立第二層長期 allowance。先查最近鏈上活動與資產變化,再檢查代幣是否仍授權給 Permit2 或其他 spender;乾淨結果只能說工具此刻沒看到持續授權,不能證明外流簽名已失效。無法安全作廢時,應把風險資產移到新錢包。

2026-07-27 · 建立詞條並於發布前完成獨立審查。