You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否盲目信任Django提示的“需将xxx添加到ALLOWED_HOSTS”错误?

问题解答

Invalid HTTP_HOST header: '139.162.113.11'. You may need to add '139.162.113.11' to ALLOWED_HOSTS.

这个报错是Django自带的ALLOWED_HOSTS安全机制的正常触发结果,你当前的配置已经成功拦截了这类非法请求,服务器运行没有问题。

关于IP来源与风险判断

这类陌生IP的HOST头请求绝大多数是公网自动化扫描工具发起的,属于公网服务器的常态现象:

  • 扫描工具会遍历所有公开的IP段,直接用IP作为HOST头发起请求,目的是排查存在配置漏洞的站点、挖掘已知框架漏洞,和你的服务器部署地、面向用户群体没有关联,示例中东京的IP就是这类扫描节点的地址。
  • 你不需要将这类IP加入ALLOWED_HOSTS,加入后反而会让这类非法请求进入应用业务逻辑,提升被攻击的风险。

正确处理方式

  • 确认你的ALLOWED_HOSTS配置仅包含你实际对外提供服务的域名,生产环境禁止设置为*,也不要添加任何非你可控的IP/域名。
  • 调整日志配置过滤无效报错,避免日志被这类请求刷满。你可以在Django的settings.py中加入如下日志规则,过滤DisallowedHost类的警告:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'ignore_disallowed_host': {
            '()': 'django.utils.log.CallbackFilter',
            'callback': lambda record: record.name != 'django.security.DisallowedHost',
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'filters': ['ignore_disallowed_host'],
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'WARNING',
    }
}
  • 如果这类请求量过大,直接在接入层拦截。你可以在Nginx、CDN等接入层配置规则,所有HOST头不是你业务域名的请求直接返回444/403,不需要转发到后端Django应用,从源头减少无效请求的资源消耗。
  • 如果单个IP的扫描频率过高,已经影响正常服务,可以通过防火墙规则临时拉黑该IP/IP段,一般情况下不需要做额外处理,公网常规扫描不会对正常配置的站点造成安全威胁。

内容的提问来源于stack exchange,提问作者Emilio Conte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:36:04