跨越多个虚拟主机的$ _SESSION

时间:2015-07-22 16:57:29

标签: php session session-variables

我了解到,如果我与另一台主机共享一台服务器(我这样做,因为我有一个虚拟主机),那么所有主机共享相同的$ _SESSION是相同的。

这是否意味着其他主机可以访问我存储在$ _SESSION中的一些变量?

2 个答案:

答案 0 :(得分:3)

检查以下内容的值:

echo ini_get('session.save_handler');
echo ini_get('session.save_path');

如果您的save_handler为files而您的save_path是/var/lib/php5之类的公共目录,那么您很可能与服务器上的其他用户共享会话存储空间。您仍然受会话哈希ID的性质保护,但如果您有敏感信息,则可能需要进行更改。您可以将save_handler更改为类似sqlite的内容并提供您自己的本地数据库文件,或者只需将save_path更改为您拥有且具有最小权限的目录。您可以在.htaccess文件中更改save_path:

php_value session.save_path = '/path/to/my/session/directory'

或者在您的PHP源代码中:

ini_set('session.save_path', '/path/to/my/session/directory');

编辑:但实际上,如果您的信息足够敏感以保证此更改,那么您应该使用VPS而不是共享服务器。

答案 1 :(得分:0)

  

这是否意味着其他主机可以访问我存储在$ _SESSION中的一些变量?

如果会话ID相同且会话使用默认配置,我会说是。关于会话ID很大,劫持的可能性非常低,但即使使用单个虚拟主机,也可能再次发生任何事情。这一切都取决于你的具体情况。

但出于所有实际目的,我敢说你会好的。

祝你好运!