最近一直在研究 SIWE,說實話,對於需要正確用戶認證的 Dapp 開發者來說,這是一個遊戲規則的改變。讓我來拆解一下我所學到的內容。



所以關於錢包連接的事情——是的,你可以將錢包連接到 Dapp,但這並不能完全向後端證明所有權。你的地址是公開資訊,對吧?理論上任何人都可以在 API 請求中聲稱自己是你。這就是以太坊登錄(Sign-In with Ethereum)派上用場的地方。它基本上是用你的錢包來加密證明你控制該地址,類似於你簽署一筆交易。

什麼時候值得實施 SIWE?如果你的 Dapp 有用戶帳號或處理敏感資料,絕對值得。像 Etherscan 這樣只查詢的應用可能不需要。但如果你在建立一個有真實用戶系統的東西,SIWE 就是正確的選擇。

整個流程本身相當直觀——主要有三個步驟。首先,通過插件進行標準的錢包連接。然後,你從後端請求一個 Nonce(這可以防止重放攻擊),用這個 Nonce 和一些其他資料(比如域名和鏈ID)構建一條訊息,並用你的錢包簽署它。最後,後端驗證簽名,並給你一個 JWT 令牌,用於後續請求。

我一直在用 Next.js 和 Ant Design Web3 來實驗實作。設定比我預期的還要簡單。你安裝依賴,配置 Wagmi 提供者和你的 SIWE 配置,一切就搞定——你就擁有錢包連接和簽署功能了。關鍵部分是 Nonce 端點(生成並存儲一個與用戶地址綁定的隨機值)和驗證端點(檢查簽名,確認 Nonce 匹配,然後發放 JWT)。

有一點讓我驚訝——預設的 RPC 設置非常慢,驗證簽名大約要花 30 秒。改用專用節點服務後,速度大幅提升。如果要上線,這是一個關鍵的優化。

當然,市面上的範例代碼只是用來學習的。正式上線的應用需要妥善處理 JWT、速率限制和其他安全措施。但核心的 SIWE 流程已經很穩固,並且在整個生態系中變得越來越標準。如果你認真想建立具有正確認證的 Dapp,這絕對值得深入了解。
ETH-0.8%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 打賞
  • 回覆
  • 轉發
  • 分享
回覆
請輸入回覆內容
請輸入回覆內容
暫無回覆