Go-Ethereum

如何使用 NFT 令牌保護 JSON-RPC 端點?

  • May 6, 2022

我看到瞭如何使用 NGINX 作為代理和基本的 http 訪問控制來設置乙太坊節點,以保護我的節點被第三方使用和濫用。

https://medium.com/coinmonks/securing-your-ethereum-nodes-from-hackers-8b7d5bac8986

我試圖弄清楚如何替換 http 訪問控制,而是使用 balanceOf 方法從 ERC721 智能合約中檢查令牌所有權關於如何實現中間件的任何想法,我可以使用 express 來輸出響應嗎?

如何保護使用 web3 rpc api 的應用程序?

您可以使用客戶端證書來保護節點的傳入連接。

為此,請實現您自己的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在應用程序層執行此操作。

引用自:https://ethereum.stackexchange.com/questions/127694