来自我自己的回答,我必须将其替换$host
才能$http_host
解决我的问题......
但这安全吗?
看起来好像所有的事情都是从标题开始$http_host
暴露整体。HOST
解释这里对我来说仍然不清楚...
有人知道为什么会$http_host
更危险吗?
编辑
实际上,这是我的第三次编辑...读完此文后,我应该重新考虑我的立场: https://stackoverflow.com/questions/1459739/php-serverhttp-host-vs-serverserver-name-am-i-understanding-the-ma
我不确定 nginx 对此有何反应,但是你们认为 nginx 是否也会与 Chris 的测试结果一致,认为两者都不安全?
在什么情况下,你能想到使用 $http_host 进行攻击的方法?此外,为什么删除端口号很重要?
我理解有可能危害网络,并发送一些内容Host: fake or old ip
,然后执行重新绑定攻击,正如我在其他地方读到的那样?
答案1
$host
只是$http_host
进行了一些处理(删除端口号和小写)并设置了默认值( ),因此在使用 时,客户端发送的标头server_name
的“暴露”程度不会降低。不过这样做并没有什么危险。Host
$http_host
答案2
需要检查应用程序中的所有标头值。虽然 nginx 可以为您的 Web 应用程序提供一些保护,但您不应该只依赖它。
我相信有可能编写一个容易通过 $host 和 $http_host 受到主机头滥用的 Web 应用程序,但这并不是避免在 nginx 配置中使用它的理由。