[英]Can browser extensions keylog user input?
我正在開發一個將敏感用戶數據加密並存儲在localStorage
的應用程序。 加密/解密密碼未保存在任何地方。 因此,如果用戶丟失了密碼,則無法解密數據。 據我所知,瀏覽器擴展可以訪問任何頁面上的localStorage
,並且可以偵聽頁面上任何元素的事件(例如input
)。 這是問題所在,因為惡意擴展可以記錄用戶密碼,從localStorage
獲取加密數據並使用該密碼解密。
我的問題是:
localStorage
? 我認為這種方法存在多個問題。
正如@wOxxOm指出的那樣,客戶端的內容完全在瀏覽器的控制下(在這種情況下),瀏覽器的設置由最終用戶(或應用於客戶端計算機的策略)控制。 您可能想到的一件事是讓您的應用以私有/隱身模式運行,因為默認情況下會禁用擴展程序,但即使如此,用戶仍可以允許隱身模式下的擴展程序,由於以下原因,它還是無濟於事(除此之外,您無法可靠地檢測到用戶是否正在使用私人/隱身模式,因此無論如何這僅僅是一個推薦。
@MaartenBodewes也已經評論了我的第二點。 選擇擴展名(並為其授予特權)是用戶的責任。 如果他非常信任擴展程序,以至於將其添加到瀏覽器中,那最終就是他的風險。 您可以對此進行警告,但是決定始終應該由用戶來決定。
我最重要的一點是,這仍然無濟於事。 正如某些 人已經指出的那樣,Java腳本中的密碼學曾經是絕望的。 如果您以較舊的瀏覽器為目標,那確實是個壞主意。 新的瀏覽器帶來了重大改進(請參閱此處的已接受答案),Content-Security-Policy和新的crypto API都很好(盡管在各瀏覽器和版本之間的支持不是很好)。
但是,您的應用程序中總會存在缺陷,這些缺陷會抵消所有安全性方面的努力。 跨站點腳本的單個實例將使您無法免受此類威脅的攻擊。 如果您非常擔心安全性,以至於您不希望用戶使用他們認為可以的擴展程序,那么您也應該同樣擔心這種風險。
簡而言之,我認為,如果惡意瀏覽器擴展是威脅模型中的主要威脅,那么不幸的是,Web可能不是一個適合您應用程序的好平台。 另一方面,編寫諸如本機應用程序之類的內容也有其自身的威脅,與Web應用程序完全不同,因此決定權在您自己。 無論您做什么,總會有殘留風險,您必須以某種方式接受或轉移。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.