由于不属于我自己的原因,我正在使用在nginx上运行的应用程序,该应用程序将GET变量放入PHP的$ _SERVER全局。
会发生什么:
用户使用Facebook连接登录
Facebook将用户会话作为JSON编码的GET变量传回回调PHP脚本
在PHP脚本运行之前,nginx规则将GET变量放入$ _SERVER
PHP脚本引用$ _SERVER中的变量并使用它将用户登录到站点
尽管事实上这是一个糟糕的解决方案,但是在nginx上将用户特定的运行时数据写入$ _SERVER变量甚至是安全的吗?当多个用户登录该站点时,它会产生任何并发问题吗?
答案 0 :(得分:1)
用户之间不共享$_SERVER
变量。每个PHP实例都有自己的$_SERVER
变量副本。它包含与当前请求有关的数据,因此是特定于请求的。你可以毫无顾虑地写下你想要的所有内容,但这样做确实不是一个好习惯(这样做会导致性能下降,而且它也非常不正统)。
如果服务器只是设置显示在$_SERVER
中的环境变量,那么这是可以接受的用途。只是不要从PHP脚本中写入它。