我了解到,如果我与另一个主机共享服务器(我有一个虚拟主机),那么所有主机共享的$_SESSION在所有主机之间都是相同的。
这是否意味着其他主机可以访问我存储在$_SESSION中的某些变量?
我了解到,如果我与另一个主机共享服务器(我有一个虚拟主机),那么所有主机共享的$_SESSION在所有主机之间都是相同的。
这是否意味着其他主机可以访问我存储在$_SESSION中的某些变量?
请检查以下数值:
echo ini_get('session.save_handler');
echo ini_get('session.save_path');
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,而不是共享服务器。
$_SESSION
是否跨虚拟主机传递(这取决于您的提供商是否将它们链接在一起),但只要您连接到相同的数据库,您可以使用cookies(存储与不同数据相关联的随机标识符)。 - Dave Chen