在Redis上安全地存储用于PHP会话的auth密钥

时间:2013-11-20 17:13:06

标签: php security redis phpredis

让我们假设某个网站正在使用redis(远程)来存储会话数据,并且该redis存储受到授权密钥的保护

所以在php.ini中,使用phpredis,它设置为:

session.save_handler = redis
session.save_path = "tcp://redis.example.com:6379?auth=[AUTH_STRING_HERE]"

有什么方法可以让它更安全吗?服务器上然后运行phpinfo()的任何人;可以看到auth字符串......

3 个答案:

答案 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文件中的值。