Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何安全地向要启动的后台应用程序提供敏感信息(如密码)?_Java_Security - Fatal编程技术网

Java 如何安全地向要启动的后台应用程序提供敏感信息(如密码)?

Java 如何安全地向要启动的后台应用程序提供敏感信息(如密码)?,java,security,Java,Security,我正在开发一个应该在后台运行的Java应用程序,并考虑将一些敏感信息(DB凭据等)外部化,以防它发生变化。这些信息是启动应用程序所必需的。然而,我想知道这样做的正确方式是什么 我考虑了以下几点,但需要从安全角度提出建议 启动应用程序时,加密密码将作为主参数传递。但是,我注意到,任何用户在查看操作系统中的进程列表时都可以看到参数 生成具有视图限制的外部文件,即java属性文件(具有加密凭据),并将文件路径传递给应用程序 将加密凭据放入用户的环境变量中,以便应用程序访问它 注意:我们已经使用了一个加

我正在开发一个应该在后台运行的Java应用程序,并考虑将一些敏感信息(DB凭据等)外部化,以防它发生变化。这些信息是启动应用程序所必需的。然而,我想知道这样做的正确方式是什么

我考虑了以下几点,但需要从安全角度提出建议

  • 启动应用程序时,加密密码将作为主参数传递。但是,我注意到,任何用户在查看操作系统中的进程列表时都可以看到参数

  • 生成具有视图限制的外部文件,即java属性文件(具有加密凭据),并将文件路径传递给应用程序

  • 将加密凭据放入用户的环境变量中,以便应用程序访问它

  • 注意:我们已经使用了一个加密工具

    就我个人而言,我倾向于第二种选择,但我想知道针对此类案例的建议、评论或最佳实践

    谢谢

    选项2最常见。 就我个人而言,我不建议选择1和3

    还有其他选择

    例如,您可以查看PicketBox Vault。 它允许自定义实现比默认实现更安全

    事实上,它是扩展选项2-有一个Vault文件受存储在密钥库中的密钥保护

    必须保护该密钥库(别名)的静态密码,但只能保护一(两)个。当需要保护多个属性时,它非常有用。它也更易于管理,因为所有财产都以相同的方式在一个地方进行保护。

    选项2最常见。 就我个人而言,我不建议选择1和3

    还有其他选择

    例如,您可以查看PicketBox Vault。 它允许自定义实现比默认实现更安全

    事实上,它是扩展选项2-有一个Vault文件受存储在密钥库中的密钥保护


    必须保护该密钥库(别名)的静态密码,但只能保护一(两)个。当需要保护多个属性时,它非常有用。它也更易于管理,因为所有财产都以相同的方式在一个地方进行保护。

    2是最明智的选择。1和3的问题是,一旦他们能够访问“加密”字符串,他们就必须弄清楚你是如何解密它的(无论如何,你必须这样做,才能利用它)


    你看过了吗,我不知道这是否是你的选择。

    2是最明智的选择。1和3的问题是,一旦他们能够访问“加密”字符串,他们就必须弄清楚你是如何解密它的(无论如何,你必须这样做,才能利用它)


    您看过了吗,我不知道这是否是您的选项。

    以及加密您需要加密的任何内容。您好,我们已经有了一个加密工具,我们将编辑帖子以包含此信息并加密您需要加密的任何内容。您好,我们已经有了一个加密工具,将编辑帖子以包含此信息谢谢您的建议。我检查了SpringCloud配置,但在我们的简单应用程序中使用它似乎太过了。(我使用的是纯java)谢谢你的建议。我检查了SpringCloud配置,但在我们的简单应用程序中使用它似乎太过了。(我使用的是纯java)