假设一个站点正在使用 redis(远程)存储会话数据,并且该 redis 存储受 auth 密钥保护
所以在 php.ini 中,使用 phpredis,它被设置为:
session.save_handler = redis
session.save_path = "tcp://redis.example.com:6379?auth=[AUTH_STRING_HERE]"
有什么办法可以让这更安全一点吗?服务器上运行 phpinfo() 的任何人;可以看到身份验证字符串...
您可以使用 ini_set 方法通过 php 代码设置此路径。并在代码中从文件/字符串中选择值,该文件/字符串可以将其存储为加密字符串。
从 PHP 7 开始,您可以将一组选项传递给 session_start() 命令,例如
session_start([
'save_handler' => 'redis',
'save_path' => 'tcp://redis.example.com:6379?auth='. $your_auth
]);
这样,您可以使用标准的 12 要素应用程序最佳实践将敏感数据存储在 .env 文件中。
对于 7 之前的 php 版本,您应该能够使用ini_set覆盖存储在 php.ini 文件中的值。
禁用 phpinfo,还尝试设置发送身份验证字符串的外部脚本或文件命令(它的安全性较低且混淆较多,但它会将问题进一步转移)