簡體   English   中英

瀏覽器擴展鍵盤記錄用戶可以輸入嗎?

[英]Can browser extensions keylog user input?

我正在開發一個將敏感用戶數據加密並存儲在localStorage的應用程序。 加密/解密密碼未保存在任何地方。 因此,如果用戶丟失了密碼,則無法解密數據。 據我所知,瀏覽器擴展可以訪問任何頁面上的localStorage ,並且可以偵聽頁面上任何元素的事件(例如input )。 這是問題所在,因為惡意擴展可以記錄用戶密碼,從localStorage獲取加密數據並使用該密碼解密。

我的問題是:

  1. 有沒有辦法禁用網頁擴展名?
  2. 有沒有一種方法可以防止擴展訪問頁面上的localStorage
  3. 我想做的事情還有另一種更安全的方法嗎?
  1. 沒有。
  2. 如果用戶允許擴展訪問,則不行。
  3. 可能,請參閱下文。

我認為這種方法存在多個問題。

正如@wOxxOm指出的那樣,客戶端的內容完全在瀏覽器的控制下(在這種情況下),瀏覽器的設置由最終用戶(或應用於客戶端計算機的策略)控制。 您可能想到的一件事是讓您的應用以私有/隱身模式運行,因為默認情況下會禁用擴展程序,但即使如此,用戶仍可以允許隱身模式下的擴展程序,由於以下原因,它還是無濟於事(除此之外,您無法可靠地檢測到用戶是否正在使用私人/隱身模式,因此無論如何這僅僅是一個推薦。

@MaartenBodewes也已經評論了我的第二點。 選擇擴展名(並為其授予特權)是用戶的責任。 如果他非常信任擴展程序,以至於將其添加到瀏覽器中,那最終就是他的風險。 您可以對此進行警告,但是決定始終應該由用戶來決定。

我最重要的一點是,這仍然無濟於事。 正如某些 已經指出的那樣,Java腳本中的密碼學曾經是絕望的。 如果您以較舊的瀏覽器為目標,那確實是個壞主意。 新的瀏覽器帶來了重大改進(請參閱此處的已接受答案),Content-Security-Policy和新的crypto API都很好(盡管在各瀏覽器和版本之間的支持不是很好)。

但是,您的應用程序中總會存在缺陷,這些缺陷會抵消所有安全性方面的努力。 跨站點腳本的單個實例將使您無法免受此類威脅的攻擊。 如果您非常擔心安全性,以至於您不希望用戶使用他們認為可以的擴展程序,那么您也應該同樣擔心這種風險。

簡而言之,我認為,如果惡意瀏覽器擴展是威脅模型中的主要威脅,那么不幸的是,Web可能不是一個適合您應用程序的好平台。 另一方面,編寫諸如本機應用程序之類的內容也有其自身的威脅,與Web應用程序完全不同,因此決定權在您自己。 無論您做什么,總會有殘留風險,您必須以某種方式接受或轉移。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM