簡體   English   中英

如何在桌面客戶端應用程序(Java)中存儲密碼和敏感數據?

[英]How to store passwords and sensitive data in a desktop client application (Java)?

我想制作一個應用程序,該程序將監視用戶的電子郵件帳戶中的傳入電子郵件以及他的Twitter帳戶中的推文。 因此,用戶必須提供其登錄憑據。 我的疑問是如何以及在何處存儲此敏感數據? 我不想讓我的應用程序惹惱用戶反復問這些問題。

而且,如果我應該加密然后存儲這些數據,那么我應該如何保護我在應用程序中使用的密鑰?

加密的重點是使明文的保密性取決於較小密鑰的保密性。

在這種情況下,單獨加密對您沒有用,因為您也無法存儲密鑰。

相反,您需要使用一些由第三方管理的現有機密(使用密碼),並使用它來導出密鑰。

在Windows上,您可以使用DPAPI,該API最終由用戶的登錄密碼支持。
如果用戶忘記了自己的密碼(或者從其他帳戶更改了密碼),則您的數據將無法恢復。

請注意,這不能防止以該用戶身份運行的代碼。
您需要確定要防御的內容。

如果確實需要它(這不是個好主意,但是...),則可能需要為諸如Firefox這樣的密碼創建加密存儲。 用戶將使用主密碼來保護密碼。

答案無處。 即使以加密形式也不要存儲密碼。 “正確”的方法可能是模擬相似Web應用程序的行為。 的確,如果您登錄Twitter,則可以選中“記住我”復選框,Twitter下次不會再要求您輸入密碼,對嗎? 如何實施?

通常,特殊令牌存儲在客戶端的cookie中。 Cookie被發送到服務器,並用於身份驗證。 Cookie的到期日期,因此超過時間將被自動刪除。

除非針對桌面應用程序有更好的解決方案,否則建議您嘗試使用此機制。

我認為使用的密碼在您的應用程序范圍內,並使用該密碼加密所有其他密碼,並且在應用程序說需要Twitter時,請使用該密碼進行解密...進一步獲取主密碼的哈希值並將其保存在磁盤上。

暫無
暫無

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

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