Go-Ethereum
獨家使用 MetaMask 的帳戶作為登錄過程的安全性
我目前正在 vue.js/node.js 中開發一個 Dapp,它將使用 MetaMask 與乙太坊網路進行互動。我在 JavaScript 模組中實現了以下程式碼。
import web3 from 'web3'; const web3Cont = () => new Promise((resolve) => { window.addEventListener('load', () => { let currentWeb3; if (window.ethereum) { currentWeb3 = new web3(window.ethereum); try { window.ethereum.enable(); resolve(currentWeb3); } catch (error) { alert('Please allow access for the app to work'); } } else if (window.web3) { window.web3 = new web3(web3.currentProvider); resolve(currentWeb3); } else { alert('You will need MetaMask to use this Site.'); } }); }); export {web3Cont};
我還在 vue.js 組件中部署了以下內容:
mounted () { web3Cont().then((res) => { this.web3 = res if (this.web3.utils) { } this.contractInstance = new this.web3.eth.Contract(contractAbi, contractAddress) this.web3.eth.getAccounts().then((accounts) => { [this.account] = accounts ... })
我沒有實現任何登錄或任何 cookie 功能,並且完全依賴登錄到 MetaMask 的帳戶(由上面的目前 Provider 獲得)來辨識使用者。這種策略安全嗎?有人能以某種方式劫持會話並使用被劫持的會話和目前登錄的 MetaMask 帳戶觸發乙太坊網路上的交易嗎?
謝謝你。Ĵ
這取決於您如何處理這些資訊。
- 乙太坊網路上的所有資訊都是公開的。
- 除非使用私鑰簽名,否則來自客戶端的任何資訊都不能被信任
- 如果您使用它來針對私有伺服器端數據庫進行身份驗證,則它是不安全的
- 所有交易均由錢包簽名,然後在乙太坊網路上進行身份驗證,因此不存在針對非託管區塊鏈活動的安全風險