我已经在java中开发了一个桌面应用程序,其中我拥有了用户的凭据。我开发了这个应用程序,使它可以在任何平台上运行。现在困惑的是,我正在获取的是存储此凭据信息的位置。文件是否适合它?或者我应该根据所使用的平台来存储它?就像在Windows中,我可以使用注册表来存储这些信息。但是,Linux和其他平台呢?有什么标准的解决方案可以帮助我或使用文件是唯一的方法吗?我最初以为将它存储在属性文件中,但任何有知识的人都可以浏览jar的内容,并可以拥有该属性文件,所以我认为这也不是合适的解决方案。请告诉我一个更好的方法来存储这个凭据。凭证已加密。哪里存储机密信息?
2
A
回答
3
如果凭据已加密,您可以将它们存储在一个文件中,最好存储在用户的主目录中。您也可以加密文件本身以防止其他人直接阅读。
使用这个,你有3个级别的安全性:
- 只有用户访问主目录(用户自己,任何管理员)可以访问文件。你也可以有多个文件 - 每个用户一个。
- 该文件是加密的,所以只有那些有权访问解密密钥和知道加密方法的人才能解密该文件。
- 证书通常使用异步算法进行加密。因此,纯文本无法用任何合理的努力来重构。
1
由于您的应用程序针对多个平台,因此即使您提供了在其他平台中实现相同功能的方法,我也不认为您应该实现特定于平台的选项。例如,总是可以浏览Windows注册表。
如果使用目前认为安全的算法对证书进行加密,我认为您不需要担心很多事情。 在你认为更合适的地方模糊了证书,加密应该完成剩下的工作,这就是它存在的原因。
只是不要忘记保护用于加密证书的密钥。
4
在这种情况下,加密密码是最好的选择。所以,你可以将它保存在一个文件中。永远不要将密码存储为文件,数据库或其他地方。我认为这是相当广泛和有用的文章在这个主题:http://www.codeproject.com/KB/recipes/StoringPasswords.aspx。
+0
不错的文章...有更多关于我的问题的知识... – ankurtr 2011-12-21 16:58:04
相关问题
- 1. iPhone在哪里存储日历信息?
- 2. Backbone.js - 在哪里存储状态信息?
- 3. virtualenvwrapper:在哪里存储virtualenv信息?
- 4. 在哪里存储类关系信息?
- 5. Solr:在哪里存储附加信息?
- 6. 哪里存储对象信息django?
- 7. 哪里存储用户登录信息?
- 8. 哪里存储用户登录信息?
- 9. Auth0 app_meta存储机密信息?
- 10. PHP:我应该在哪里存储信息和警告信息
- 11. git在哪里存储有关存储库的来源信息
- 12. 在哪里存储jasypt解密密码
- 13. Eclipse在哪里存储哪些文件是“Derived”的信息?
- 14. 哪里存储用户在PHP中的错误/信息消息?
- 15. ASP.NET中存储的缓存信息在哪里?
- 16. 存储不在捆绑中的文件的密码信息在哪里?
- 17. 闪存消息存储在哪里?
- 18. 在哪里存储静态信息,如历史,条款,联系信息
- 19. HMAC/Javascript - 在哪里存储秘密?
- 20. Webmin在哪里存储根MySQL密码?
- 21. 运行时在哪里存储密码?
- 22. SSL对称密钥存储在哪里?
- 23. Netbeans 7在哪里存储FTP密码
- 24. SecKeyGeneratePair在哪里存储密钥对?
- 25. 哪里可以存储密码?
- 26. laravel密码盐在哪里存储?
- 27. ModX Evolution:SMTP密码存储在哪里?
- 28. 设计存储密码在哪里?
- 29. 在哪里存储用户的信息(个人信息,用户名和密码)在visual basic?
- 30. Spring Roo在哪里保存信息?
谢谢。我认为将文件存储在主目录是我将遵循的。 – ankurtr 2011-12-21 13:29:34