gpt4 book ai didi

PHP $_SERVER ['HTTP_HOST' ] vs. $_SERVER ['SERVER_NAME' ],我是否正确理解了手册页?

转载 作者:IT老高 更新时间:2023-10-28 11:43:29 28 4
gpt4 key购买 nike

我做了很多搜索,还阅读了 PHP $_SERVER docs .我是否有权在我的 PHP 脚本中使用哪个用于在整个网站中使用的简单链接定义?

$_SERVER['SERVER_NAME'] 基于您的 Web 服务器的配置文件(在我的例子中是 Apache2),并且取决于几个指令:(1) VirtualHost,(2) ServerName, (3) UseCanonicalName等

$_SERVER['HTTP_HOST'] 基于来自客户端的请求。

因此,在我看来,为了使我的脚本尽可能兼容而使用的正确方法是 $_SERVER['HTTP_HOST']。这个假设正确吗?

后续评论:

我想在阅读这篇文章并注意到有些人说“他们不会信任任何 $_SERVER vars”后我有点偏执:

显然讨论主要是关于 $_SERVER['PHP_SELF'] 以及为什么你不应该在没有适当转义的情况下在表单 Action 属性中使用它以防止 XSS 攻击。

我对上述原始问题的结论是,对网站上的所有链接使用 $_SERVER['HTTP_HOST'] 是“安全的”,而不必担心 XSS 攻击,即使在使用时也是如此在表格中。

如果我错了,请纠正我。

最佳答案

这可能是每个人的第一个想法。但这有点困难。见 Chris Shiflett’s article SERVER_NAME Versus HTTP_HOST .

似乎没有 Elixir 。只有当你 force Apache to use the canonical name您将始终使用 SERVER_NAME 获得正确的服务器名称。

所以你要么选择它,要么根据白名单检查主机名:

$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' ] vs. $_SERVER ['SERVER_NAME' ],我是否正确理解了手册页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1459739/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com