ALLOWED_HOSTS
Default: [] (Empty list)
表示此Django站点可以投放的主机/域名的字符串列表。这是防止HTTP主机头部攻击的安全措施,即使在许多看似安全的Web服务器配置下也是如此。
此列表中的值可以是完全限定名称(例如“www.example.com”),在这种情况下,它们将完全匹配请求的主机标头(不区分大小写,不包括端口)。以期间开头的值可以用作子域通配符:'.example.com'将匹配example.com,www.example.com和example.com的任何其他子域。值“*”匹配任何东西;在这种情况下,您有责任提供您自己对Host头的验证(可能在中间件中);如果是这样,中间件必须首先列在MIDDLEWARE中)。
Django还允许任何条目的完全限定域名(FQDN)。某些浏览器在主机标头中包含一个后跟点,Django在执行主机验证时将其标记。
如果主机头(或X-Forwarded-Host(如果USE_X_FORWARDED_HOST已启用))与此列表中的任何值不匹配,则django.http.HttpRequest.get_host()方法将引发SuspiciousOperation。
当DEBUG为True并且ALLOWED_HOSTS为空时,主机将针对['localhost','127.0.0.1','[:: 1]']进行验证。
此验证仅适用于get_host();如果您的代码直接从request.META访问Host头,您将绕过此安全保护。
在Django更改1.10.3: 在旧版本中,如果DEBUG = True,则未检查ALLOWED_HOSTS。这也在Django 1.9.11和1.8.16中改变,以防止DNS重新绑定攻击。
本文详细介绍了Django框架中的ALLOWED_HOSTS设置项,解释了如何通过配置该选项来增强应用程序的安全性,防止HTTP主机头部攻击。此外,文章还讲解了不同类型的主机名配置及其适用场景。
6520

被折叠的 条评论
为什么被折叠?



