存储数据库密码的最佳做法

2022-09-03 02:22:49

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

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

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

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

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

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

谢谢


答案 1

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

您最好的选择是专注于尽快发现入侵(受损服务器),在最坏的情况下保持良好的异地离线备份,首先为入侵设置许多障碍,等等。


答案 2

我正在分享,我解决这个问题的方式。

  • 构建 API,以从外部域查询身份验证详细信息。
  • 使用公钥和私钥通读详细信息。

但是,老实说,这唯一做的就是使简单的事情过于复杂。之后,我为数据库创建了几个具有不同权限的用户。

喜欢

  • guest只能到SELECT
  • mod只能 、 、 、CREATEINSERTUPDATEDELETE

等,并在出现经过身份验证的用户时切换用户。

通过用户和会话的结合,到目前为止,我已经能够逃脱威胁。但是,当然,代码漏洞必须经过彻底的测试。