溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何保證以太坊DApp本地存儲(chǔ)localStorage的安全性

發(fā)布時(shí)間:2021-12-22 15:19:45 來源:億速云 閱讀:338 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家介紹如何保證以太坊DApp本地存儲(chǔ)localStorage的安全性,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

部署去中心化應(yīng)用程序dapp會(huì)引入一些有趣的安全性考慮因素,這些因素可能不會(huì)出現(xiàn)在更傳統(tǒng)的開發(fā)中。我們?nèi)绾伪WCdApp本地存儲(chǔ)的安全性?

提出這個(gè)問題的原因是我們?cè)谑褂肅olony dApp時(shí)遇到的一個(gè)重要障礙,那就是如何應(yīng)對(duì)在使用IPFS或Swarm等分布式存儲(chǔ)系統(tǒng)保持本地存儲(chǔ)的dApp數(shù)據(jù)安全挑戰(zhàn)。

我將從dApp開發(fā)人員的角度來看一下這個(gè)問題,然后研究一些可能的解決方案。

共享本地存儲(chǔ)localStorage的問題

IPFS運(yùn)行本地節(jié)點(diǎn)node,它與Web服務(wù)器捆綁在一起。捆綁的Web服務(wù)器使節(jié)點(diǎn)可以輕松地相互連接并共享網(wǎng)絡(luò)中其他位置可能需要的數(shù)據(jù)。

作為一個(gè)去中心化的應(yīng)用程序構(gòu)建器,你將依賴該Web服務(wù)器將你的內(nèi)容從一個(gè)節(jié)點(diǎn)推送到另一個(gè)節(jié)點(diǎn),從而使其可以根據(jù)需要立即供最終用戶使用。

假設(shè)你正在完全去中心化full decentralized并且正在避免使用DNS或Web代理等任何內(nèi)容來跟蹤你的內(nèi)容在網(wǎng)絡(luò)上的位置,那么訪問dApp的方式通常是通過瀏覽器使用其查詢本地節(jié)點(diǎn)哈希,如:

http://localhost:8080/QmcefGgoVLMEPyVKZU48XB91T3zmtpLowbMK6TBM1q4Dw/

現(xiàn)在,假設(shè)在正常使用期間,你的應(yīng)用程序?qū)⒃跒g覽器的localStorage保存數(shù)據(jù):可能需要傳遞一些數(shù)據(jù),或者保持本地用戶交互的隊(duì)列,以最大限度地減少鏈上交易并節(jié)省gas成本。

瀏覽器中的本地存儲(chǔ)僅限于特定的地址上下文(域和端口)。IPFS節(jié)點(diǎn)是獲取此上下文的,這意味著通過IPFS Web服務(wù)器運(yùn)行的任何去中心化應(yīng)用程序?qū)⑹褂镁哂凶x寫訪問權(quán)限的相同localStorage。

這可能是一個(gè)大問題。

默認(rèn)情況下,dApp的某些helper依賴項(xiàng)使用localStorage臨時(shí)將密鑰保存在純文本中。這些數(shù)據(jù)不應(yīng)該被看到的一天。

如何保證以太坊DApp本地存儲(chǔ)localStorage的安全性

另一個(gè)潛在的泄漏問題是保存其內(nèi)存狀態(tài)的軟件包,以便以后可以恢復(fù)。類似Flux-like的庫通常(相對(duì))安全,因?yàn)樗鼈冎辉趦?nèi)存中運(yùn)行,但啟用持久性狀態(tài)會(huì)將該內(nèi)存狀態(tài)放入localStorage,從而將其打開給潛在的攻擊者。

緩解問題的策略

不幸的是,安全沒有靈丹妙藥:作為一名dApp開發(fā)人員,為安全起見所做的任何調(diào)整都可能需要在開發(fā)的其他方面做出一些讓步。

以下是你可以做出的一些妥協(xié):

不存儲(chǔ)任何數(shù)據(jù)

這當(dāng)然是最安全的方法,但它有點(diǎn)像燒毀你的房子來擺脫蟑螂。在本地存儲(chǔ)數(shù)據(jù)的dApp中有許多功能和基本行為,刪除太多后可能沒有應(yīng)用程序存在的意義了。

此外,有許多庫默認(rèn)使用localStorage,你必須手動(dòng)檢查每個(gè)依賴項(xiàng)并刪除任何需要它的庫,否則就得自己修改庫。

加密一切這在理論上更有前途,特別是因?yàn)榇蠖鄶?shù)dApp開發(fā)人員已經(jīng)在看板上保持默認(rèn)加密。

如何保證以太坊DApp本地存儲(chǔ)localStorage的安全性

加密的local storage值

實(shí)際上,加密所有本地存儲(chǔ)有點(diǎn)麻煩。要加密數(shù)據(jù),必須有一個(gè)密鑰:但是用戶不能將該密鑰存儲(chǔ)在dApp中,因?yàn)樗鼘⒈环旁趌ocalStorage,這樣做你就將回到原點(diǎn)。

一種解決方案是使用錢包:你的dApp可能會(huì)以某種方式與區(qū)塊鏈進(jìn)行交互,要求用戶解鎖其錢包以發(fā)送和簽署交易。由于無論如何都需要錢包與dApp交互,因此可以使用每個(gè)帳戶的私鑰privatekey來加密本地存儲(chǔ)。

然而,這也有一些缺點(diǎn):

  • 每次想要與localStorage交互時(shí),您都必須詢問用戶的純文本私鑰。

  • 像MetaMask這樣的密鑰管理軟件不起作用,因?yàn)樗肋h(yuǎn)不會(huì)暴露用戶的私鑰。

使用Swarm和Mist

Mist是作為dApp和以太坊瀏覽器構(gòu)建的,因此它為該問題提供了一些特殊優(yōu)勢(shì)。

默認(rèn)情況下,Mist支持Swarm的bzz協(xié)議,因此你可以設(shè)置一個(gè)ens地址指向dApp的哈希值,然后使用Mist無需擔(dān)心地瀏覽你的dApp。

不幸的是,這只會(huì)解決通過Mist訪問dApp的用戶的問題。

運(yùn)行本地Swarm節(jié)點(diǎn)的用戶仍然必須通過localhost訪問,localhost仍然(可能)將數(shù)據(jù)泄露給其他dApp。

為你的dApp創(chuàng)建一個(gè)瀏覽器擴(kuò)展

通過瀏覽器擴(kuò)展程序運(yùn)行你的應(yīng)用程序?qū)?dǎo)致它獲得單獨(dú)的上下文(它將不再在localhost:8080),但它有點(diǎn)減弱了去中心化應(yīng)用程序的目的,必須要依賴于像Chrome網(wǎng)絡(luò)商店這樣的中央權(quán)威機(jī)構(gòu)用于管理和分配。

此外,現(xiàn)在你必須為要支持的每個(gè)瀏覽器創(chuàng)建和維護(hù)單獨(dú)的擴(kuò)展,并通過其自己的特定集中式應(yīng)用商店進(jìn)行更新。不爽。

創(chuàng)建一個(gè)獨(dú)立的桌面應(yīng)用程序

和以前一樣,創(chuàng)建獨(dú)立應(yīng)用程序是將dApp分離到自己的上下文的一種方式,這意味著它將獲得自己的包裝器(在本例中為electron)。

獨(dú)立的桌面應(yīng)用程序具有額外的好處,可以捆綁外部庫和你可能需要的任何其他內(nèi)容,包括IPFS本身的單獨(dú)實(shí)例。

和以前說的一樣,要有一些讓步:

  • 除非你想要專門在bittorrent上分發(fā)應(yīng)用程序,否則你需要找到一個(gè)集中托管的解決方案來進(jìn)行分發(fā)和維護(hù)。

  • 你必須為electron桌面應(yīng)用程序維護(hù)一個(gè)單獨(dú)的存儲(chǔ)庫。

  • 如果你想將IPFS用于任何其他服務(wù),你可能最終會(huì)在同一臺(tái)計(jì)算機(jī)上運(yùn)行多個(gè)節(jié)點(diǎn),這可能會(huì)變得混亂。

將你的應(yīng)用代理到域名

通過使用其他Web服務(wù)器代理本地節(jié)點(diǎn),有兩個(gè)優(yōu)點(diǎn):

首先,現(xiàn)在你的dApp有一個(gè)友好的友好的人類可讀地址,而不是一個(gè)冗長的哈希。其次,你的應(yīng)用程序?qū)碛凶约旱纳舷挛?,并且不?huì)共享localStorage。

然而,代理確實(shí)跨越了“真正的”去中心化,用戶將再次不得不依靠中央服務(wù)器來訪問去中心化的服務(wù)。哎。

對(duì)于去中心化的應(yīng)用程序開發(fā)人員來說,現(xiàn)在還處于早期階段。這種問題在新興的“去中心化協(xié)議棧”中無處不在“:而且在我們提出更優(yōu)雅的解決方案之前可能還需要一段時(shí)間。

將來,在瀏覽器中支持本機(jī)IPFS或Swarm節(jié)點(diǎn)可以解決這個(gè)問題,并且無需將Web服務(wù)器與去中心化的文件存儲(chǔ)捆綁在一起。用戶可以輸入類似ipfs://QmcefGgoVLMEPyVKZU48XB91T3zmtpLowbMK6TBM1q4Dw/并直接訪問dApp,并為每個(gè)唯一的哈希分配自己的上下文。

關(guān)于如何保證以太坊DApp本地存儲(chǔ)localStorage的安全性就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI