一尘不染

比将mysql密码以纯文本格式存储在配置文件中更好的方法?

mysql

令我感到困扰的是,许多PHP程序要求用户将mysql密码以纯文本(字符串或常量)存储在应用程序根目录下的配置文件中。

这些年来,有没有更好的方法呢?

到目前为止,我提出了两个最小的安全性增强措施:

  1. 使用.htaccess中的规则通过网络使文件不可读(以防php失败或存在读取php源代码的安全漏洞)

  2. 在建立(未设置)数据库连接之后销毁内存中的密码(以防止由于安全漏洞,注入等导致的字符串转储)

但是,当然,这些解决方案都无法解决原始问题。

感谢您提出任何其他建议!


阅读 297

收藏
2020-05-17

共1个答案

一尘不染

由于您的代码将需要密码,因此没有完美的安全性。但是,您可能很难恢复。

我将一些哈希值作为环境变量放入我的Web配置中,例如 MYSQL_PASS_HASH

然后我执行类似的操作md5(getenv('MYSQL_PASS_HASH').'gibberish$qwefsdf'),然后输入密码。unsetenv如果您偏执,当然应该在那之后。

您的密码实际上不会存储在某个地方,只有当有人同时拥有您的Web配置 您的数据库包含时,才能恢复您的密码。

这发生在webroot之外的文件中(请不要放任您所有的信任.htaccess)。

2020-05-17