Go-Ethereum
如何使用 NFT 令牌保護 JSON-RPC 端點?
我看到瞭如何使用 NGINX 作為代理和基本的 http 訪問控制來設置乙太坊節點,以保護我的節點被第三方使用和濫用。
https://medium.com/coinmonks/securing-your-ethereum-nodes-from-hackers-8b7d5bac8986
我試圖弄清楚如何替換 http 訪問控制,而是使用 balanceOf 方法從 ERC721 智能合約中檢查令牌所有權關於如何實現中間件的任何想法,我可以使用 express 來輸出響應嗎?
您可以使用客戶端證書來保護節點的傳入連接。
為此,請實現您自己的
HttpProvider
(範例)變體,只允許發送客戶端證書。您還可以固定節點的自簽名證書。現在為您的後端定義一個 CA,為節點創建和自簽名證書,還為客戶端創建和簽名證書。
在
nginx.conf
定義節點證書並要求客戶端由您的 CA 簽名 -server { listen 443 ssl http2; server_name your.local.host; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_client_certificate ca.crt; ssl_verify_client on; proxy_set_header X-SSL-CERT $ssl_client_cert; proxy_set_header x-ssl-verify $ssl_client_verify; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://localhost:8545; } }
您的節點現在可以通過
https://your.local.host
並需要由 CA 簽名的客戶端證書。這是最安全的。
我試圖弄清楚如何替換 http 訪問控制,而是使用 balanceOf 方法從 ERC721 智能合約中檢查令牌所有權關於如何實現中間件的任何想法,我可以使用 express 來輸出響應嗎?
這種檢查在 Nginx 或任何 Web 伺服器中間件中是不可能的,或者過於復雜。但是,您可以使用Sign in with Ethereum在應用程序層執行此操作。