Rui*_*ira 24 java security password-storage
在Java桌面应用程序中存储密码的推荐方法是什么?
我希望用户能够只输入一次credencials而不会再次提示.
在个人项目中,我一直在使用Preferences API,但我认为这与将其存储在纯文本(安全方面)没有什么不同.
非常感谢
编辑:
非常感谢你的建议.似乎有些混乱,毫无疑问,因为我可能没有把问题弄得很清楚......
我将给出一个假设的场景:
假设我正在为远程数据库创建一个简单的前端,该数据库使用用户名/密码创建连接字符串.通常,每次应用程序启动时都会提示用户输入用户名/密码组合.
将密码存储在用户机器中的最佳方法是什么,无需重新输入(在应用程序启动时自动连接).
一种"记住我"的功能(我知道这本身并不是一个很好的做法...)
EDIT2:
感谢大家的回答.PaŭloEbermann对手头的问题非常有用,Chris Smith的链接很有意思,但我接受了JVerstry的一个,因为密钥库可能是我正在采取的路线.
Jér*_*nge 10
您可以使用本地密钥库来放置密码而不是密钥.
回答编辑:
Keystores非常适合您的需求.如果您需要额外的保护,您可以要求用户在启动应用程序时输入一个密码来访问所有密码.然后,您可以使用启动应用程序时使用的一个密码,使用简单的salt-and-stretch方法(生成加密密钥)来保护存储的数据库密码.
无法以 Java 程序可以检索的方式在计算机上存储某些内容(无需用户输入密码),但此计算机上的其他程序(在同一用户的帐户中运行)无法检索它。
您可以尝试以某种方式对其进行加密,并将解密算法与解密密钥一起隐藏在您的程序中(白盒加密),但是攻击者只需要在调试器中运行您的程序即可解密数据。
您可以使用系统的权限系统,但是如果攻击者是在与您的 Java 程序相同的用户帐户中运行的某个程序,这通常无济于事(如果攻击者具有 root 访问权限,则帮助更小)。
最好的办法是将密码存储在 USB 存储器上,并在您使用完后告诉用户将其取出,但是如果攻击程序正在运行并在您从记忆棒中读取秘密时进行观察,即使这样也可以没有帮助。
| 归档时间: |
|
| 查看次数: |
20481 次 |
| 最近记录: |