【问题标题】:How to set custom $_SERVER variables from client in PHP如何在 PHP 中从客户端设置自定义 $_SERVER 变量
【发布时间】:2015-07-11 08:24:30
【问题描述】:

根据这篇文章:Which $_SERVER variables are safe? 和我看到的另一个,客户端似乎能够设置自定义 $_SERVER 变量。例如:$_SERVER['HTTP_EXAMPLE']

客户端如何实际设置 $_SERVER['HTTP_EXAMPLE'] 的值?

【问题讨论】:

标签: php


【解决方案1】:

如果您有权访问 Apache 配置文件,则可以使用 mod_env

SetEnv HTTP_EXAMPLE http_example

然后你就可以访问那个变量了

echo $_SERVER["HTTP_EXAMPLE"]; //outputs http_example

【讨论】:

  • 我的意思是从客户端,而不是服务器端。无法访问 apache 配置的客户端。
  • 我喜欢这个解决方案。处理 docker 环境变得更容易。
  • 对于 nginx (php-fpm),您可能希望通过 fastcgi_param: stackoverflow.com/a/8331663/6225838 声明此变量
【解决方案2】:

如果需要,您可以在脚本中设置变量

$_SERVER['DOCUMENT_ROOT'] = 'test';
echo $_SERVER['DOCUMENT_ROOT'];  // test

其他文章真正指的是欺骗变量,例如客户端报告的REMOTE_ADDR

有关这方面的更多信息,请查看这篇关于伪造 REMOTE_ADDR 的帖子。 How to fake $_SERVER['REMOTE_ADDR'] variable?

【讨论】:

  • 我的意思是从客户端,而不是服务器端。无法访问原始 PHP 代码的客户端。另一篇文章还列出了客户端集下的“任何其他'HTTP_'值”。
  • 更新了相关帖子的链接。这是一个开放式问题,因为有很多潜在的方法可以解决问题
猜你喜欢
  • 1970-01-01
  • 2020-12-31
  • 2018-02-23
  • 2015-04-14
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多