Django 应用程序依赖于某些链接等的主机头。在我的设置中,我有一个 django 应用程序在 nginx 后面作为反向代理运行(具有非默认值server_name
)
根据:
https://docs.djangoproject.com/en/3.1/topics/security/#host-header-validation
例如,即使 Apache 被配置为从设置了 ServerName 的非默认虚拟主机提供您的 Django 站点,HTTP 请求仍然有可能匹配该虚拟主机并提供虚假的 Host 标头
我找不到任何关于是否或如何在 nginx 中完成的信息。
依赖来自nginx的标头在webapp中盲目允许真的不安全吗?
要将
Host:
标头传递到反向代理应用程序,请将以下内容添加到您的server
/location
块:这取决于 nginx 虚拟主机配置,
$host
最终可能的值是多少。如果您的
server
块是default_server
块,则意味着服务器块将处理发送到任何虚拟主机的任何请求。在这种情况下,Host
标头的值会传播到上游服务器。为了防止这种
default_server
情况发生,请使用此版本:example.com
你的域名在哪里。更好的方法是正确配置 nginx,以便
default_server
块始终返回 404,并使用具有正确名称的正确虚拟主机。