PHP 服务器变量:'HTTP_HOST' 与 'SERVER_NAME'
您遇到了一些信息,建议使用任何 $_SERVER变量是不安全的,导致您质疑使用 $_SERVER['HTTP_HOST'] 和$_SERVER['SERVER_NAME']。让我们澄清一下情况。
正如您所知,$_SERVER['SERVER_NAME'] 由网络服务器的配置决定,而 $_SERVER['HTTP_HOST'] 基于客户端的请求。这种区别提出了使用哪个变量来实现站点范围内的可靠链接定义的问题。
虽然使用 $_SERVER['HTTP_HOST'] 来实现兼容性似乎合乎逻辑,但 Chris Shiflett 的文章“SERVER_NAME Versus HTTP_HOST”揭示了更复杂的情况。 Apache Web 服务器可以配置为使用规范名称,确保服务器名称与 SERVER_NAME 一致。但是,如果不强制执行此配置,仅依靠 HTTP_HOST 可能还不够。
为了确保链接的完整性,请考虑以下选项:
$allowed_hosts = array('foo.example.com', 'bar.example.com'); if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) { header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request'); exit; }
通过评估这些选项并考虑提出的安全问题,您可以就哪种方法最适合您的 PHP 脚本做出明智的决定。
以上是$_SERVER[\'HTTP_HOST\'] 与 $_SERVER[\'SERVER_NAME\']:您应该使用哪个来实现安全链接?的详细内容。更多信息请关注PHP中文网其他相关文章!