令我感到困扰的是,许多PHP程序要求用户将mysql密码以纯文本(字符串或常量)存储在应用程序根目录下的配置文件中。
这些年来,有没有更好的方法呢?
到目前为止,我提出了两个最小的安全性增强措施:
使用.htaccess中的规则通过网络使文件不可读(以防php失败或存在读取php源代码的安全漏洞)
在建立(未设置)数据库连接之后销毁内存中的密码(以防止由于安全漏洞,注入等导致的字符串转储)
但是,当然,这些解决方案都无法解决原始问题。
感谢您提出任何其他建议!
由于您的代码将需要密码,因此没有完美的安全性。但是,您可能很难恢复。
我将一些哈希值作为环境变量放入我的Web配置中,例如 MYSQL_PASS_HASH
MYSQL_PASS_HASH
然后我执行类似的操作md5(getenv('MYSQL_PASS_HASH').'gibberish$qwefsdf'),然后输入密码。unsetenv如果您偏执,当然应该在那之后。
md5(getenv('MYSQL_PASS_HASH').'gibberish$qwefsdf')
unsetenv
您的密码实际上不会存储在某个地方,只有当有人同时拥有您的Web配置 和 您的数据库包含时,才能恢复您的密码。
这发生在webroot之外的文件中(请不要放任您所有的信任.htaccess)。
.htaccess