2

假设一个站点正在使用 redis(远程)存储会话数据,并且该 redis 存储受 auth 密钥保护

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

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

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

4

3 回答 3

1

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

于 2014-06-09T04:30:10.190 回答
1

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

于 2017-10-31T19:43:51.817 回答
0

禁用 phpinfo,还尝试设置发送身份验证字符串的外部脚本或文件命令(它的安全性较低且混淆较多,但它会将问题进一步转移)

于 2015-01-18T04:51:45.837 回答