来自探测黑客的 Django HTTP_HOST 错误,如何禁用此 500 错误?
Posted
技术标签:
【中文标题】来自探测黑客的 Django HTTP_HOST 错误,如何禁用此 500 错误?【英文标题】:Django HTTP_HOST error from probing hackers, how to disable this 500 error? 【发布时间】:2017-05-25 06:49:20 【问题描述】:我收到一条错误消息发送到我的管理员电子邮件地址:
ADMIN = ['admin.error.email.here@domain.com'] email address.
此错误消息以大约每分钟两次的恒定速率出现。
我想停止发送到我的管理员电子邮件的所有 HTTP_HOST 错误消息,但同时仍收到 500 条错误消息。我查看了文档,找不到任何帮助。我在 Stack Overflow 上搜索,只发现将 nginx 80 端口服务器配置文件更改为包含头错误为 444 错误,从而绕过 500 错误报告。但是,这不起作用。
是否有任何setting.py
变量用于排除某些错误?时间至关重要——就像我说的那样,每分钟有 2 封该死的电子邮件来自某个拼命抓取数据的混蛋。这不是安全风险,但它很烦人,并且消耗了我的电子邮件主机的每月电子邮件限制。
感谢您的帮助。
【问题讨论】:
【参考方案1】:首先我还没有测试这个特定的示例,但在类似情况下我的方法是为您的日志记录编写一个自定义过滤器。
为此首先编写一个自定义过滤器:
import logging
class NoAnnoyFilter(logging.Filter):
def filter(self, record):
status_code = getattr(record, 'status_code', None)
return status_code != 500
然后将其添加到您的 settings.py
中的日志记录配置中:
DEFAULT_LOGGING =
...
'filters':
'no_annoy':
'()': 'myproject.utils.NoAnnoyFilter',
,
,
...
'handlers':
'mail_admins':
'level': 'ERROR',
'filters': ['no_annoy'],
'class': 'django.utils.log.AdminEmailHandler'
,
...
,
您可以在 Django 代码本身中看到一些实际示例:https://github.com/django/django/blob/6709ea4ae91b906742506ac0c42a3a272991001f/django/utils/log.py
【讨论】:
感谢您的回复。我确信其他人肯定可以使用这个想法......我最终通过更改我的 nginx cofig 文件中的内容来修复它,添加了这个: if ($host !~* ^(example.com|www.example .com)$) 返回 444;以上是关于来自探测黑客的 Django HTTP_HOST 错误,如何禁用此 500 错误?的主要内容,如果未能解决你的问题,请参考以下文章
Django 的 SuspiciousOperation 无效的 HTTP_HOST 标头
Django 错误(外部 IP):无效的 HTTP_HOST 标头:'*.domain.com'
避免使用 Django + Elastic Beanstalk 获得“无效的 HTTP_HOST 标头:'localhost'”消息
Django 错误:无效的 HTTP_HOST 标头:u'/run/myprojectname/gunicorn.sock:'