2012-06-25 140 views
2

我用java腳本製作了firefox附加組件。我想爲此加載項提供密碼保護。我可以在哪裏永久保存用戶密碼?我怎樣才能做到這一點?如何在javascript中創建密碼保護的應用程序?

+5

如果您使用純JavaScript,密碼永遠不會安全。 –

+3

我相當肯定,除了使用cookie之外,沒有辦法保持狀態,這可能不是一個可行的選擇,原因有很多。你能否更具體地說明你爲什麼要保護它? –

+0

@Derek:雖然您的評論對JavaScript完全正確,但在開發將在機器上運行的附加組件時,絕對安全可能不是嚴格的要求。畢竟,如果您有權訪問機器,您還將能夠看到存儲在Firefox中的所有密碼。 –

回答

0

最好的解決方案是存儲在外部存儲上。就像網站一樣。您發送身份驗證數據,服務器檢查用戶並返回true或false。這有幾個問題。如果您想限制未註冊用戶的部分附加組件,那是不可能的。整個代碼對用戶是可用的,他可以修改它。

如果您爲單個用戶創建了一個祕密,不可預知,唯一且統一的數據的網站特定添加/搜索(很可能在網站的Cookie和首選項中)。你可以散列它並將其用作密碼。與該特定網站的用戶名一起。這樣你可以避免註冊。

服務器溝通通過HTTP不太安全,但嘿,大多數網站仍然使用它。

如果您沒有可用的外部服務器,您可以使用本地存儲(如SQLite),或者我有一個密碼,您可以使用preferences,它們也可在about:config下使用。但是這些遠非永久性的。直到用戶重新安裝操作系統,這是不常見的。

如果你想封閉源代碼來隱藏存儲模式,散列生成或類似XP-COM組件可能會對你有所幫助,但我不推薦,因爲它很難維護(所有平臺上的所有版本)。

0

如果需要輸入密碼才能將用戶認證到服務器,那麼您應該使用nsILoginManager來存儲它。如果用戶定義主密碼,密碼將被加密存儲在磁盤上。如果您想要保護分機的用戶界面不受用戶限制,那麼存儲密碼的位置並不重要 - 這種保護僅適用於無經驗的用戶。例如。您可以使用Preferences來存儲它。