我理解为什么主机标头的验证很重要,但我不明白为什么这是 Django 的责任。
设置的文档神秘地提到
即使在许多看似安全的 Web 服务器配置下也是可能的。
和主机头验证的文档提到了类似的内容:
因为即使看似安全的 Web 服务器配置也容易受到虚假主机标头的影响
和
本文档的先前版本建议配置您的 Web 服务器以确保它验证传入的 HTTP 主机标头。虽然仍然建议这样做,但在许多常见的 Web 服务器中,看似验证主机标头的配置实际上可能不会这样做。例如,即使 Apache [..]
到了 2024 年,是否仍有理由担心这些“许多”(未记录的)“看似安全的服务器配置”,或者我可以只使用一个健全的代理服务器并让它进行验证吗?将
ALLOWED_HOSTS
设置为 ["*"]
可以消除部署时需要考虑的另一件事。
职业偏执狂!
如果您在 Django 服务器暴露于整个互联网的环境中操作,则那里存在敌对行为者。如果您可以将可能地址的子集定义为您想要服务的地址,则可以立即减少威胁概况。如果您在某种“应该”能够抵御此类威胁的防火墙或代理后面运行,那么假设它可能无法履行其职责也没什么坏处。