gpt4 book ai didi

java - 在 Java 中存储数据库密码(在 JDBC 连接字符串中需要)的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 02:18:53 25 4
gpt4 key购买 nike

我目前正在开发一个 Java 应用程序,以使用 JDBC 连接到 Azure 数据库。这就是我当前的代码的样子 -

File file = new File("filename.txt");
Scanner scanner = new Scanner(file);
String pwd = scanner.nextLine();

String connectionUrl =
"jdbc:sqlserver:{A link here};" +
"database={DBName}; +
"user={UserName};" +
"password=" + pwd + ";"
"encrypt=true;" +
"trustServerCertificate=false;" +
"hostNameInCertificate=*.database.windows.net;" +
"loginTimeout=30;";

我打算在完成后将这个项目公开上传到 Github,显然在那里使用纯文本密码似乎是一个糟糕的主意。

但是,我不确定执行此操作的最佳方法是什么。我认为存储哈希密码不起作用,因为数据库字符串需要纯文本形式。我能想到的最好办法是将密码存储在文本文档中(以及其他几个单词/文本),并使用 IO reader/substrings/BufferedReader 将其作为变量读取。对于普通读者来说,这至少在某种程度上掩盖了它,但任何了解基本 Java 的人仍然能够识别它(或者只是输入一个简单的 System.out.print(pwd))

似乎确实应该有更好的方法,但我还没有找到任何可行的解决方案来阻止用户打开文本文档/conf 文件并读取密码。我希望保持连接完全自动化,因此不想提示用户输入密码。如果您能回答如何实现这一目标,我们将不胜感激!

我是一名(主要是自学成才的)学生,在 Java 方面的实践经验有限,所以如果我错过了一个相当明显的解决方案,我深表歉意。

最佳答案

通常这些值存储在系统环境变量中。

例如,设置以下系统变量:

  1. DATABASE_URL=<your url>
  2. DATABASE_NAME=<your database name>
  3. DATABASE_USER_NAME=<your database user name>
  4. DATABASE_USER_PASSOWRD=<your database user password>

然后在代码中使用 System.getProperty("DATABASE_URL") 检索它们ETC。或者更好的方法是将所有连接 URL 存储在系统环境变量中:

  1. DATABASE_CONNECTION_URL=jdbc:sqlserver:someUrl...

您可以在 official documentation 中查看一些示例,了解如何在 Azure 中设置系统环境变量。或here on StackOverflow .

关于java - 在 Java 中存储数据库密码(在 JDBC 连接字符串中需要)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66737251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com