在哪里存储机密信息?

时间:2011-12-21 13:14:27

标签: java security storage credentials

我已经在java中开发了一个桌面应用程序,我已经获取了用户的凭据。我开发了这个应用程序,使其可以在任何平台上运行。现在的困惑是,我得到的是存储此凭据信息的位置。文件是否适合它?或者我应该根据使用的平台存储它?就像在Windows中我可以使用注册表来存储此信息。但是linux和其他平板电脑呢?是否有任何标准的解决方案可以帮助我或使用文件是唯一的方法吗?我最初想将它存储在属性文件中,但任何知识渊博的人都可以浏览jar的内容并且可以拥有该属性文件,所以我认为它也不是合适的解决方案。请告诉我存储此凭据的更好方法。凭据已加密。

3 个答案:

答案 0 :(得分:4)

在这种情况下,加密密码是最佳选择。因此,您可以将其保存在文件中。切勿将密码以纯文本形式存储在文件,数据库或其他地方。我认为这篇文章非常广泛且有用:http://www.codeproject.com/KB/recipes/StoringPasswords.aspx

答案 1 :(得分:3)

如果凭据已加密,您可以将它们存储在文件中,最好存储在用户的主目录中。您也可以加密文件本身,以防止其他人直接阅读。

使用此功能,您有3个安全级别:

  1. 只有具有访问主目录的用户(用户本人和任何管理员)才能访问该文件。您还可以拥有多个文件 - 每个用户一个。
  2. 文件已加密,因此只有那些有权访问解密密钥且知道加密方法的人才能对其进行解密。
  3. 通常使用异步算法对凭据进行加密。因此,无法通过任何合理的努力来重建纯文本。

答案 2 :(得分:1)

由于您的应用程序针对多个平台,我认为您不应该实现特定于平台的选项,即使您提供了在其他平台中实现相同功能的方法。例如,无论如何,总是可以浏览Windows注册表。

如果使用当前接受为安全的am算法加密凭据,我认为您不必担心。 在您认为更合适的地方隐藏凭据,加密应该完成其余的工作,这就是它存在的原因。

请不要忘记保护用于加密凭据的密钥。

相关问题