Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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_Database - Fatal编程技术网

Java 如何在代码中避免硬编码数据库凭据

Java 如何在代码中避免硬编码数据库凭据,java,database,Java,Database,我一直在寻找一种方法来避免将数据库凭证硬编码到主要用Java编写的代码库中,但我还没有找到很多解决方案。我读过一篇帖子,他们说单向散列可能是答案。有没有其他方法可以安全地连接到数据库,而不会遇到有人反编译您的代码的风险 只是澄清一下,我不是在寻找代码,而是在正确的方向上推动 您可以在代码中加载配置文件。定义某种文件,如JSON或XML,并在其中定义所有配置。您可以将该文件作为命令行参数指向,也可以只对文件路径进行硬编码 下面是一篇关于用Java解析JSON配置的帖子: 您可以在代码中加载配置文件

我一直在寻找一种方法来避免将数据库凭证硬编码到主要用Java编写的代码库中,但我还没有找到很多解决方案。我读过一篇帖子,他们说单向散列可能是答案。有没有其他方法可以安全地连接到数据库,而不会遇到有人反编译您的代码的风险


只是澄清一下,我不是在寻找代码,而是在正确的方向上推动

您可以在代码中加载配置文件。定义某种文件,如JSON或XML,并在其中定义所有配置。您可以将该文件作为命令行参数指向,也可以只对文件路径进行硬编码

下面是一篇关于用Java解析JSON配置的帖子:
您可以在代码中加载配置文件。定义某种文件,如JSON或XML,并在其中定义所有配置。您可以将该文件作为命令行参数指向,也可以只对文件路径进行硬编码

下面是一篇关于用Java解析JSON配置的帖子:
你可以参考这些帖子。他们基本上只是说要么散列,要么将其存储在属性文件中,要么使用API。有些帖子不仅仅是关于Java的,你还可以从中获得一些想法


你可以参考这些帖子。他们基本上只是说要么散列,要么将其存储在属性文件中,要么使用API。有些帖子不仅仅是关于Java的,你还可以从中获得一些想法


我们团队中的解决方案“数据库即服务”,其他应用程序使用其API获取数据库凭据,请求包含简单凭据,如应用程序名称。

我们团队中的解决方案“数据库即服务”,其他应用程序使用其API获取数据库凭据,请求包含简单的凭据,如应用程序名称。

您有几个选项可以避免源代码中的硬代码值:

使用高级平台的属性 来自环境变量的属性 来自SCM的属性 来自文件系统的属性 详情如下:


有几个选项可以避免源代码中的硬代码值:

使用高级平台的属性 来自环境变量的属性 来自SCM的属性 来自文件系统的属性 详情如下:


若您可以使用SpringBoot应用程序,那个么您可以使用CloudConfig方法进行配置。我添加了一些postgresql数据库连接详细信息,供您进一步参考。请参考以下链接了解spring引导云配置


若您可以使用SpringBoot应用程序,那个么您可以使用CloudConfig方法进行配置。我添加了一些postgresql数据库连接详细信息,供您进一步参考。请参考以下链接了解spring引导云配置


如果他们可以对应用程序进行反编译以获取凭据,那么将应用程序与包含凭据的文件一起发送似乎也不会有多大的好处。该文件不会被编译。如果没有提供,程序将无法启动。因此您将发送一个未编译的文件。。。我根本不明白这是怎么解决问题的。OP指出反编译代码是问题所在:这意味着我们谈论的不是web应用程序,或者至少不是远程web应用程序。如果他们能反编译代码,就意味着它是本地的。如果是本地文件,则具有凭据的外部文件与代码有完全相同的问题。这是有意义的。我考虑的更多是部署一些东西。是的,这将是一个简单的桌面应用程序,因此,人们可以对代码进行反编译,并可能查看使用该程序编译的任何配置文件。如果他们可以对应用程序进行反编译以获取凭据,那么将应用程序与包含凭据的文件一起交付似乎没有多大好处。该文件不会被编译。如果没有提供,程序将无法启动。因此您将发送一个未编译的文件。。。我根本不明白这是怎么解决问题的。OP指出反编译代码是问题所在:这意味着我们谈论的不是web应用程序,或者至少不是远程web应用程序。如果他们能反编译代码,就意味着它是本地的。如果是本地文件,则具有凭据的外部文件与代码有完全相同的问题。这是有意义的。我考虑的更多是部署一些东西。是的,这将是一个简单的桌面应用程序,因此人们可以反编译代码,并可能查看使用该程序编译的任何配置文件。我将如何着手制作这种简单的API?你知道有什么资源吗?@justanotherguy据我所知,没有用于此的库,但为此创建API很简单,你可以创建一个rest API数据库作为服务器。有几种方法可以做到这一点。检查我将如何着手制作这种简单的API?你知道有什么资源吗?@justanotherguy据我所知,没有用于此的库,但为此创建API很简单,你可以创建一个rest API数据库作为服务器。有几种方法可以做到这一点。检查
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://{{db_url}}:5432/{{db_name}}
spring.datasource.username=postgres
spring.datasource.password=
spring.datasource.maxActive=3
spring.datasource.maxIdle=3
spring.datasource.minIdle=2
spring.datasource.initialSize=2
spring.datasource.removeAbandoned=true
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=3
spring.datasource.tomcat.test-on-borrow=true