如何避免在代码中使用硬编码的数据库凭据

时间:2019-02-13 03:04:06

标签: java database

我一直在寻找一种避免将数据库凭据硬编码到我的代码库(主要是用Java编写)中的方法,但是我没有找到很多解决方案。我读过this的帖子,他们说单行哈希可能是答案。还有另一种安全地连接到数据库而又不会有人反编译代码的风险的方法吗?

请澄清一下,我不是在寻找代码,而是在朝着正确的方向前进。

5 个答案:

答案 0 :(得分:1)

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

  

How can I avoid hardcoding the database connection password?   https://security.stackexchange.com/questions/36076/how-to-avoid-scripts-with-hardcoded-password   https://www.codeproject.com/Articles/1087423/Simplest-Way-to-Avoid-Hardcoding-of-the-Confidenti

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您有几种选择可以避免在源代码中使用硬代码值:

  • 使用高级平台的属性
  • 环境变量的属性
  • SCM的属性
  • 文件系统中的属性

更多详细信息在这里:

https://stackoverflow.com/a/51268633/3957754

答案 3 :(得分:1)

如果可以使用spring boot应用程序,则可以使用cloud config方法进行配置。我添加了一些postgresql db连接详细信息,供您进一步参考。请参考以下链接以了解Spring Boot Cloud配置。 spring_cloud

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

答案 4 :(得分:0)

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

这是一篇有关在Java中解析JSON配置的文章: How to read json file into java with simple JSON library