Go-Ethereum
如何保護使用 web3 rpc api 的應用程序?
當使用 geth 作為客戶端並通過 web 瀏覽器使用 web3(javascript api) 與其互動時,網路中的其他節點可以根據 IP 和客戶端執行的埠訪問客戶端。
如何防止這種情況?
如何將訪問限制為執行客戶端的節點(電腦)而不是同一網路中的其他節點?
流程如下
瀏覽器(使用者)—–>伺服器(執行節點)—–>GETH
第一個連結是http,第二個連結是rpc。http連結使其他電腦可以訪問我要停止的節點。
只有執行 geth 客戶端的節點(電腦)才能訪問 geth 客戶端。
這可以通過引入一個中間件來防止,該中間件將與您的 geth 節點對話,並讓您的 UI 與中間件對話,而不是直接與 geth 節點對話。
我遇到了類似的問題,我通過在 Node.js 中創建中間件來解決它
有了這個,你的 geth 節點就不會暴露給公眾,這讓我們免於一些安全問題。
您可以查看此項目以供參考 - https://github.com/Imaginea/lms
我想
rpccorsdomain
可能是你正在尋找的東西。–rpccorsdomain : value 逗號分隔的域列表,從中接受跨源請求(瀏覽器強制)
您可以指定 rpc 域,例如:
geth --rpccorsdomain 'http://localhost:8080', 'http://xxx:8080'