让我们假设某个网站正在使用redis(远程)来存储会话数据,并且该redis存储受到授权密钥的保护
所以在php.ini中,使用phpredis,它设置为:
session.save_handler = redis
session.save_path = "tcp://redis.example.com:6379?auth=[AUTH_STRING_HERE]"
有什么方法可以让它更安全吗?服务器上然后运行phpinfo()的任何人;可以看到auth字符串......
答案 0 :(得分:1)
您可以使用ini_set方法通过php代码设置此路径。并且在代码中从文件/字符串中选择值,该值可以将其存储为加密字符串。
答案 1 :(得分:0)
禁用phpinfo,同时尝试设置发送auth字符串的外部脚本或文件命令(它的安全性更低,混淆更多,但它会将问题进一步移动到线上)
答案 2 :(得分:0)
从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文件中的值。