回答
Preferences API是存儲用戶和系統偏好的好方法。如果你想存儲密碼,你必須加密它們。這裏有一篇很好的文章,可以幫助你開始。
我通常存儲在用戶數據目錄,與隨後的應用程序版本的應用程序名的子目錄。
public static String getUserDataDirectory() {
return System.getProperty("user.home") + File.separator + ".jstock" + File.separator + getApplicationVersionString() + File.separator;
}
我一直在使用下面的代碼3年。這種方法在Windows,Linux或Mac中運行得很好。
請注意,在Windows中,從不將它存儲在Program Files
中,因爲Windows Vista或更新版本中的UAC可能會給您帶來很多麻煩。
記住在應用程序名稱的前面加上一個點,以便它將成爲Linux中的隱藏文件夾。
使用這種方法的好處在於,您不僅限於存儲原始值的自我。取而代之的是,你可以通過使用xstream
例如保存整個對象狀態到硬盤:
public static boolean toXML(Object object, File file) {
XStream xStream = new XStream();
OutputStream outputStream = null;
Writer writer = null;
try {
outputStream = new FileOutputStream(file);
writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
xStream.toXML(object, writer);
}
catch (Exception exp) {
log.error(null, exp);
return false;
}
finally {
close(writer);
close(outputStream);
}
return true;
}
但是,這是安全的嗎?您是否以純文本格式存儲密碼? – djna 2010-09-24 06:47:00
存在以純文本形式存儲密碼的情況,而不是簡單地將其混淆 - 混淆會給人一種錯誤的安全感。看例如http://developer.pidgin.im/wiki/PlainTextPasswords – gustafc 2010-09-24 06:57:49
在我存儲密碼之前,我將使用http://www.jasypt.org/來執行加密。目前,我在我的應用程序中硬編碼我的加密密鑰。我曾經想過讓用戶特定關鍵。但是,這可能會阻止普通用戶使用我的應用程序,因爲它很難解釋什麼是關鍵。因此,我放棄了這個想法。到目前爲止,我沒有收到有關安全問題的抱怨。 – 2010-09-24 07:09:02
存儲單個密碼安全是相當困難的。假設您使用某個密鑰加密密碼。那麼當你的Applciation再次開始時,它需要這個祕密密鑰,它從哪裏得到?
如果詢問用戶,那麼他可能只需輸入您首先存儲的ftp密碼。如果它從某個地方讀取密鑰,那麼你需要保密密鑰,我們又回到了我們開始的地方。
如果您保留了多個密碼,然後詢問用戶輸入某個「保險箱」的單個密碼可能會更友好,但是您隨後會遇到處理過期密碼的麻煩。
有產品可用於處理這種東西的麥汁,如果你有嚴重的需求,那麼你可能需要調查他們。
- 1. 設置java應用程序的最佳方式是什麼?
- 2. 爲.NET應用程序存儲用戶設置的最佳方式是什麼?
- 3. 保存iphone應用程序設置的最佳方法是什麼?
- 4. 將全局應用程序設置存儲在Rails應用程序中的最佳方式是什麼?
- 5. 保護Flex-BlazeDS應用程序的最佳方式是什麼?
- 6. 在Java,Spring MVC,Hibernate和Annotations Web應用程序中設置MySQL用戶變量的最佳方式是什麼?
- 7. 分發Java應用程序的最佳方式是什麼?
- 8. 什麼是保存用戶名和高分的最佳方式
- 9. 使用量角器設置API應用程序的最佳方式是什麼?
- 10. 保持Web應用程序配置的最佳方式是什麼?
- 11. 爲C#應用程序存儲/設置配置設置的最佳方式是什麼?
- 12. 在Java中編寫命令行應用程序的最佳方式是什麼?
- 13. 在Android中存儲應用程序數據的最佳方式是什麼?
- 14. 在Rails 4應用程序中顯示位置的最佳方式是什麼?
- 15. 將用戶數據(電子郵件+密碼)保存到您的應用程序的最佳方式是什麼?
- 16. 測試rails應用程序的最佳方式是什麼?
- 17. 部署Pylons應用程序的最佳方式是什麼?
- 18. 推出Web應用程序的最佳方式是什麼?
- 19. 初始化應用程序的最佳方式是什麼?
- 20. 什麼是監視.NET應用程序的最佳方式?
- 21. GWT應用程序樣式的最佳方法是什麼?
- 22. 什麼是在我們的應用程序中保持/驗證用戶登錄憑證的最佳方式
- 23. 在網絡應用程序上存儲圖像的最佳方式是什麼?
- 24. 序列化Delphi應用程序配置的最佳方式是什麼?
- 25. 什麼是應用程序關閉後保存sparsebooleanArray對象的最佳方法
- 26. 在Android應用程序中使用typo3內容的最佳方式是什麼?
- 27. 在React JS應用程序中使用REST API的最佳方式是什麼?
- 28. 在ASP.NET MVC應用程序中使用YUI TabView的最佳方式是什麼?
- 29. 在SOA應用程序中使用DTO的最佳方式是什麼?
- 30. 在web應用程序中使用log4j的最佳方式是什麼?
我們應該在哪裏存儲所需的密鑰? – 2010-09-24 13:22:48
不錯的介紹教程在這裏:http://www.mkyong.com/java/java-properties-file-examples/ – 2013-05-29 11:41:44
我想說明的是,如果您使用的是偏好設置,那麼在Windows上您可能必須更改註冊表。對於您的應用程序的普通用戶,這可能是一個阻止程序(禁止!)。 – 2016-04-06 11:29:56