Java 在哪里存储机密信息?

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

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

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

如果凭证是使用目前被认为是安全的am算法加密的,我认为您不必太担心。 将凭证隐藏在您认为更合适的位置,加密应该完成其余工作,这就是它存在的原因


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

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

使用此选项,您有3个安全级别:

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

  • 在这种情况下,加密密码是最好的选择。因此,您可以将其保存在文件中。永远不要将密码以纯文本形式存储在文件、数据库或其他地方。我认为这是一篇关于这个主题的非常广泛和有用的文章:。

    让用户可以访问加密数据是一种好的做法吗?用户在自己的计算机中无法访问什么?无论如何,凭据都是用户的。我想你是想提供一种方式,让第三方可以访问私人计算机,但却无法访问凭据,对吗?是的。确切地第三方应无法访问凭据。谢谢。我认为将文件存储在主目录中是我将遵循的步骤。