java - 存储数据库密码的最佳实践

标签 java mysql security passwords

我正在开发一个将访问数据库的自定义服务器应用程序。我需要决定将凭据(和地址)存储到该服务器的位置。

一种常见的解决方案是将凭据放在配置文件中。但是,我不希望受感染的服务器意味着黑客可以访问数据库(托管在单独的服务器上)。

我可以将凭据存储在环境中,但这只是通过默默无闻的安全性。邪恶先生可以在环境中寻找它。

有人建议加密。但是,如果我将 key 存储在可执行文件中,快速反编译(我们使用的是 Java),我仍然注定要失败。

我还想避免每次启动服务器时都必须输入释义。

有什么建议吗?我觉得我错过了一些简单的东西。

谢谢

最佳答案

我不认为您遗漏了一些简单的东西。有问题的服务器可以在没有您帮助的情况下连接到数据库,在这种情况下,它必须具有凭据;否则,如果您不提供它们,它就无法连接。您可以采取各种步骤,例如您列出的步骤,使受感染的服务器更难向数据库显示凭据,但归根结底,如果它必须拥有这些凭据并将它们提供给数据库服务器进行连接,它们必须存储在某个地方——或者至少,它必须有一些获取它们的方法,因此在这个意义上是可破解的。

你最好的办法是集中精力尽快发现入侵(受感染的服务器),为最坏的情况保持良好的离线备份,首先为入侵设置很多障碍,等

关于java - 存储数据库密码的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191317/

相关文章:

php - 突出显示或着色使用 PHP 和 Mysql 获取的表中特定行的值

security - 发送给用户的出站数据是否也在 SSL 连接中加密?

security - 密码哈希 - 如何升级?

javascript - javascripts 访问密码字段值是否被视为安全风险?

java - 如何使用 Spring Boot 微服务外部 log4j.properties 文件并将其作为 Linux 服务运行?

java - 在 JavaFX 中调整 ToggleButton 的大小

php - 在点击时使用 AJAX(jQuery、PHP、MySQL)

php - Phalcon 模型更新不起作用

java - 打印带有嵌套循环的棋盘。 [Java]

java - 用于将声明更改为 java 集合接口(interface)而不是具体实现的插件