我可以使用HTTP_HOST的替代方案吗?

时间:2012-06-13 14:32:12

标签: php apache security host

我必须显示当前的服务器主机(在PHP中,但它不是很重要)。我不知道我是哪个主持人。 如果没有安全问题,我怎么能这样做?如果我使用$_SERVER['HTTP_HOST'],它来自客户端,所以我不相信这些信息(我认为它可以重写)。

PS:我读过这篇文章:How reliable is HTTP_HOST?但我没有找到任何回复(也许我没有正确搜索......)

3 个答案:

答案 0 :(得分:5)

使用$_SERVER['SERVER_NAME']为此目的,来自文档:

  

执行当前脚本的服务器主机的名称。如果脚本在虚拟主机上运行,​​则这将是为该虚拟主机定义的值。

答案 1 :(得分:1)

如果您不打算将其用于安全性或身份验证,则$_SERVER['HTTP_HOST']应该没问题。您的脚本小子访问者的值可能不正确,但您的常规用户将使用行为良好的浏览器。

只要您像对待任何其他用户输入那样对待它,就不会有任何安全问题。清理它,不建立文件名或基于它执行命令,在显示之前将其转义等等。

答案 2 :(得分:0)

你甚至可以给出

php_uname('n');

或者甚至

`hostname -f`

(注意这里的反引号)一试。