【问题标题】:how safe is $_SERVER["HTTP_HOST"]?$_SERVER["HTTP_HOST"] 有多安全?
【发布时间】:2012-04-27 12:27:46
【问题描述】:

我有一个充满网站网址的数据库,主键是网站的$_SERVER["HTTP_HOST"]

当用户导航到...假设www.my-epic-example-url.com,它将连接数据库并使用该网站的$_SERVER["HTTP_HOST"],然后获取引用该网站的所有数据!

我想知道的是,$_SERVER["HTTP_HOST"] 的安全性如何?

可以外部修改吗?

我问的唯一原因是因为我不久前读过一篇文章(不记得它在哪里)说使用 $_SERVER 时要小心,因为它不安全......

这是真的吗?

【问题讨论】:

标签: php superglobals


【解决方案1】:

$_SERVER["HTTP_HOST"] 是从客户端发送的 HTTP Host 标头。这使得这个标头通常不安全

但是,如果您处于典型的虚拟主机设置中,其中 Web 服务器根据 VirtualHost 配置决定执行哪个脚本,而这些配置又由 HTTP Host 标头触发,那么您的脚本应该 em> 除非在该标头中收到已知的列入白名单的值,否则不会执行。

如果 Web 服务器不关心 Host 标头并为任何和所有请求执行特定脚本,那么此值绝对可以是任何值。

【讨论】:

  • 您应该将其中的一些添加到您对欺骗的综合答案中。您没有具体解释那里的 VirtualHost 部分。
  • 完成,参考了另一个答案。 :)
  • 请注意,它们是绕过 VirtualHost 限制的已知方法,例如在 HTTP 请求中使用绝对 URI,这会导致免费播放 Host 标头。所以一般不安全是非常正确的。
猜你喜欢
  • 2018-05-23
  • 2015-08-09
  • 2023-04-04
  • 2018-04-17
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2011-05-29
  • 2021-03-12
相关资源
最近更新 更多