0

我正在開發一個應用程序,用於加密和存儲敏感用戶數據localStorage。加密/解密密碼不保存在任何地方。所以,如果用戶丟失密碼,則無法解密數據。 據我所知,瀏覽器擴展可以在任何頁面上訪問localStorage,並且可以從頁面上的任何元素(例如input)收聽事件。這是問題所在,因爲惡意擴展可以鍵入用戶密碼,從localStorage獲取加密數據並使用密碼對其進行解密。瀏覽器擴展可以鍵盤輸入用戶嗎?

我的問題是:

  1. 有沒有辦法從網頁禁用擴展?
  2. 有沒有辦法阻止擴展訪問頁面上的localStorage
  3. 有沒有更安全的方法來做我想做的事情?
+2

網頁和客戶端網頁應用程序沒有防禦能力,但您可以自己編寫擴展程序,並執行所有敏感內容。 – wOxxOm

+3

最終,您可能不想對用戶決定下載並運行哪些擴展模塊負全部責任。您可以隨時*推薦*不安裝擴展程序,在運行應用程序時禁用擴展程序,或確實使用不帶擴展程序的單獨安裝程序。 –

回答

2
  1. 若用戶所允許的擴展訪問。
  2. 也許,請參見下文。

我覺得這種方法有很多問題。

正如@wOxxOm所指出的那樣,客戶端事物完全在瀏覽器的控制下(在這種情況下),並且瀏覽器設置由最終用戶(或應用於客戶端計算機的策略)管理。你可以想到的一件事是讓你的應用程序以隱私/隱身模式運行,因爲默認情況下會禁用擴展程序,但即使此時用戶也可以允許擴展程序進入隱身模式,並且由於下面描述的原因,除此之外,您無法可靠地檢測到用戶是否正在使用私人/無痕模式,因此無論如何這只是一個推薦)。

我的第二點也已被@MaartenBodewes評論。選擇擴展(並授予他們特權)是您用戶的責任。如果他非常信任擴展名並將其添加到他的瀏覽器中,那最終是他的風險。你可以警告這一點,但決定總是應該與用戶一起坐。

而我最重要的一點是,這無濟於事。正如somepeople已經指出的那樣,Javascript中的加密技術曾經是絕望的。如果您的目標是舊版瀏覽器,那麼這真是一個糟糕的主意。新瀏覽器帶來了重大改進(請參閱接受的答案here),Content-Security-Policy和新的加密API都很好(雖然瀏覽器和版本支持不佳)。

但是,在您的應用程序中總會存在一些缺陷,否定所有安全措施。一個跨站點腳本實例將使您無法抵禦這些威脅。如果您對安全性如此擔憂,以至於您希望用戶不使用他們認爲沒問題的擴展程序,那麼您也應該同樣關注類似的風險。

簡而言之,我認爲如果惡意瀏覽器擴展是威脅模型中的主要威脅,那麼很遺憾,Web可能不是您的應用程序的良好平臺。另一方面,編寫類似本地應用程序的東西有其自身的威脅,與網絡應用程序截然不同,因此決定權歸您所有。無論你做什麼,總會有剩餘的風險,你將不得不接受或以某種方式轉移。

+0

謝謝,先生!現在一切都更清晰了! –

相關問題