2011-06-02 61 views
4

我需要我的應用程序能夠記住用戶的用戶名和密碼,以便將來用戶不必再次輸入。安全:我應該如何儲存(「記住」)用戶以供將來使用的用戶名和密碼?

顯然,以「記住」以備將來使用的用戶名和密碼,這意味着我的應用程序將不得不到磁盤的用戶名和密碼存儲在某種方式。

這通常是如何完成的?我知道Pidgin以純文本形式存儲用戶名和密碼。如果可能,我想避免這種情況。有沒有更好的辦法?

編輯:我針對的平臺是Windows。

+0

您定位的是哪個平臺? GNOME有GNOME Keyring,用於存儲加密的密碼,並且默認情況下在用戶登錄時使用(通過pam掛鉤使用其登錄密碼)解鎖。 KDE擁有KWallet,IIRC的工作方式與GNOME非常相似(兩者甚至可以實現其他API)。我相信MacOSX有類似的東西。我不知道Windows。 – Spudd86 2011-06-02 20:47:59

+0

@ Spudd86:嗨,我的目標是Windows。 – WonderRed 2011-06-02 21:01:08

回答

4

首先,請注意,本地存儲名稱和密碼的方法將不會安全。混淆和/或加密(我認爲這是強制性的)將防禦偶然的窺探,但數據必須在本地可以被破譯,纔能有用,而且這個過程可以被一個確定的黑客複製。您應該始終讓用戶選擇退出(或選擇)此計劃。 (這是瀏覽器通常會做的。)

如果使用名稱/密碼傳送到服務器,更好的方法是在成功登錄和儲存,以獲得從本地服務器身份令牌。這樣一來,即使加密被打破,用戶的登錄憑據不受影響(儘管訪問該帳戶可能是,至少直到令牌被撤銷)。

編輯:既然你針對Windows,可以考慮使用Data Protection API

+0

正如我在我的評論指出,有可能是一個存儲解決方案,這將是安全的,只要用戶在可根據目標平臺上沒有登錄。 – Spudd86 2011-06-02 20:52:15

0

假設你需要存儲的外部服務的憑證,比如存儲的電子郵件帳戶的用戶名和密碼,您的安全本地存儲唯一的選擇就是將它們寫入文件前加密相關的憑證。

你選擇加密的方法本身就是一個問題。

聚焦選擇不能被蠻力被迫在合理的時間量的加密機制和選擇加密機制,其允許設置和改變的密鑰長度的直接手段您的關注。

相關問題