📅  最后修改于: 2023-12-03 15:14:43.618000             🧑  作者: Mango
在 Django 中,ALLOWED_HOSTS
是一个设置,其作用是告诉 Django 哪些主机名可以访问该 Django 项目。如果一个请求的主机名不在 ALLOWED_HOSTS
中,Django 将拒绝该请求,以防止潜在的安全风险。
在 Django 的设置文件(settings.py
)中,需要设置 ALLOWED_HOSTS
变量。该变量是一个包含允许访问的主机名的列表。
# settings.py
ALLOWED_HOSTS = ['example.com', 'www.example.com']
在上面的示例中,只允许 example.com
和 www.example.com
这两个主机名访问该 Django 项目。
ALLOWED_HOSTS 是 Django 用于防止 HTTP Host 头攻击的一种安全特性。HTTP Host 头攻击是指攻击者伪造 HTTP 请求的主机头(Host header),从而获取或篡改敏感信息的一种攻击方式。
通过限制来自特定主机名的请求,可以防止攻击者通过伪造主机头来发送请求,并增加项目的安全性。
ALLOWED_HOSTS 应该是一个字符串列表,每个字符串代表一个允许访问的主机名。常见的配置方式有以下几种:
ALLOWED_HOSTS = ['example.com']
ALLOWED_HOSTS = ['example.com', 'www.example.com']
ALLOWED_HOSTS = ['.example.com']
或 ALLOWED_HOSTS = ['*.example.com']
(允许所有 example.com
的子域名访问)ALLOWED_HOSTS
设置为 ['*']
。这将允许任何主机名访问项目,并增加项目受到攻击的风险。ALLOWED_HOSTS
设置为 ['*']
,以方便测试。但在生产环境中,务必将其设置为实际的允许访问的主机名。ALLOWED_HOSTS
中的任何一个不匹配时,Django 将返回一个 "Bad Request (400)" 响应。