我在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上。
答案 0 :(得分:3)
我通常会将我网站上的“真实”网址硬编码为网站配置文件。我不会依赖Apache“说”告诉你你的网址。您是否有几个不同的vhost或服务器别名指向同一个docroot?
答案 1 :(得分:1)
您可以通过在Apache配置中启用UseCanonicalName指令来强制执行此变量的安全性,如http://www.apacheref.com/ref/http_core/UseCanonicalName.html所述