首页 > 后端开发 > php教程 > $_SERVER[\'HTTP_HOST\'] 与 $_SERVER[\'SERVER_NAME\']:您应该使用哪个来实现安全链接?

$_SERVER[\'HTTP_HOST\'] 与 $_SERVER[\'SERVER_NAME\']:您应该使用哪个来实现安全链接?

Barbara Streisand
发布: 2024-11-24 21:53:35
原创
344 人浏览过

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which Should You Use for Secure Links?

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 可能还不够。

为了确保链接的完整性,请考虑以下选项:

  • 强制 Canonical Names:配置 Apache 使用规范名称,确保 SERVER_NAME 始终提供正确的服务器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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板