2011-12-21 103 views
2

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

回答

3

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

使用这个,你有3个级别的安全性:

  1. 只有用户访问主目录(用户自己,任何管理员)可以访问文件。你也可以有多个文件 - 每个用户一个。
  2. 该文件是加密的,所以只有那些有权访问解密密钥和知道加密方法的人才能解密该文件。
  3. 证书通常使用异步算法进行加密。因此,纯文本无法用任何合理的努力来重构。
+1

谢谢。我认为将文件存储在主目录是我将遵循的。 – ankurtr 2011-12-21 13:29:34

1

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

如果使用目前认为安全的算法对证书进行加密,我认为您不需要担心很多事情。 在你认为更合适的地方模糊了证书,加密应该完成剩下的工作,这就是它存在的原因。

只是不要忘记保护用于加密证书的密钥。

+0

保持用户可以访问加密数据是一种好的做法吗? – ankurtr 2011-12-21 13:23:40

+0

用户在自己的计算机中无法访问什么?无论如何,证书都是用户的。我想你正试图提供一种方式,让第三方访问私人计算机的人不能访问凭证,对吧? – 2011-12-21 13:27:14

+0

是的。究竟。第三个人不应该能够访问凭据。 – ankurtr 2011-12-21 13:29:08

4

在这种情况下,加密密码是最好的选择。所以,你可以将它保存在一个文件中。永远不要将密码存储为文件,数据库或其他地方。我认为这是相当广泛和有用的文章在这个主题:http://www.codeproject.com/KB/recipes/StoringPasswords.aspx

+0

不错的文章...有更多关于我的问题的知识... – ankurtr 2011-12-21 16:58:04