在Redis上安全地存储PHP会话的验证密钥


Securely store auth key for PHP sessions on Redis

假设一个站点正在使用redis(远程)存储会话数据,并且redis存储受到身份验证密钥的保护

因此,在php.ini中,使用phpredis,它被设置为类似于:

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

有什么方法可以让这更安全一点吗?服务器上运行phpinfo()的任何人;可以查看身份验证字符串。。。

从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文件中存储的值。

您可以使用ini_set方法通过php代码设置此路径。在代码中,从文件/字符串中选择值,该文件/字符串可以将其存储为加密字符串。

禁用phpinfo,也可以尝试设置一个外部脚本或文件命令来发送身份验证字符串(这不太安全,更模糊,但会将问题进一步转移)