是否有一个很好的替代$ _SERVER ['SERVER_NAME']?

时间:2012-09-07 13:59:02

标签: php apache security superglobals

我在PHP doc pages上阅读了以下评论:

  

“警告服务器阵列的大多数内容(甚至   $ _SERVER ['SERVER_NAME'])由客户提供,可以   操纵。它们也可以用于注射,因此必须   像任何其他用户输入一样检查和处理。“

然后我在这里看到了一个主题on StackOverflow saying that $_SERVER['SERVER_NAME'] is partly server controlled

我可以信任这个值来获取我网站的网址吗?如果我不能真正信任$ _SERVER ['SERVER_NAME'],我该如何获得此值?什么是可能的替代品及其利弊?

OBS: PHP 5.3在Apache,Unix上。

2 个答案:

答案 0 :(得分:3)

我通常会将我网站上的“真实”网址硬编码为网站配置文件。我不会依赖Apache“说”告诉你你的网址。您是否有几个不同的vhost或服务器别名指向同一个docroot?

答案 1 :(得分:1)

您可以通过在Apache配置中启用UseCanonicalName指令来强制执行此变量的安全性,如http://www.apacheref.com/ref/http_core/UseCanonicalName.html所述