为了账号安全,请及时绑定邮箱和手机立即绑定

PHP $ _SERVER ['HTTP_HOST']与$ _SERVER

PHP $ _SERVER ['HTTP_HOST']与$ _SERVER

哔哔one 2019-08-30 16:17:16
我做了很多搜索,还阅读了PHP $ _SERVER文档。对于在我的网站中使用的简单链接定义,我的PHP脚本使用哪个权限?$_SERVER['SERVER_NAME'] 是基于您的Web服务器的配置文件(在我的情况下是Apache2),并根据一些指令而变化:(1)VirtualHost,(2)ServerName,(3)UseCanonicalName等。$_SERVER['HTTP_HOST'] 基于客户的要求。因此,在我看来,为了使我的脚本尽可能兼容而使用的正确方法是$_SERVER['HTTP_HOST']。这个假设是否正确?后续评论:我想在读完这篇文章之后我有点偏执,并注意到有些人说“他们不会相信任何一个$_SERVER变种”:http://markjaquith.wordpress.com/2009/09/21/php-server-vars-not-safe-in-forms-or-links/http://php.net/manual/en/reserved.variables.server.php#89567(评论:Vladimir Kornea 14-Mar-2009 01:06)显然,讨论主要是关于$_SERVER['PHP_SELF']为什么你不应该在表单action属性中使用它而没有适当的转义以防止XSS攻击。我对上述原始问题的结论是$_SERVER['HTTP_HOST'],即使在表单中使用,也可以“安全”地使用网站上的所有链接,而不必担心XSS攻击。如果我错了,请纠正我。
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

只是另外一个注意事项 - 如果服务器在80以外的端口上运行(在开发/内联网机器上可能是常见的),则HTTP_HOST包含端口,而不包含端口SERVER_NAME。


$_SERVER['HTTP_HOST'] == 'localhost:8080'

$_SERVER['SERVER_NAME'] == 'localhost'

(至少这是我在基于Apache端口的虚拟主机中注意到的)


正如迈克下面提到的,HTTP_HOST并没有包含:443在HTTPS运行时(除非你是一个非标准端口,我没有测试运行)。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 1360 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信