基于 Django1.10 文档的深入学习(31)—— settings 之 ALLOWED_HOSTS

ALLOWED_HOSTS

Default: [] (Empty list)

表示此Django站点可以投放的主机/域名的字符串列表。这是防止HTTP主机头部攻击的安全措施,即使在许多看似安全的Web服务器配置下也是如此。

此列表中的值可以是完全限定名称(例如“www.example.com”),在这种情况下,它们将完全匹配请求的主机标头(不区分大小写,不包括端口)。以期间开头的值可以用作子域通配符:'.example.com'将匹配example.comwww.example.comexample.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)