自从在django 1.4.4中引入ALLOWED_HOSTS设置以来,我收到了很多关于django错误的电子邮件到我的管理员地址,因为一些愚蠢的蜘蛛寻找易受攻击的phpMyAdmin安装或其他一些例外.这些邮件是完全有效的,因为蜘蛛请求中的主机头确实是错误的,但我宁愿让django在重要的事情出错时只向我发送错误邮件.是否有一种简单的方法可以使SuspiciousOperation邮件静音,或者我是否必须一直使用子类CommonMiddleware?
Dan*_*man 32
为了完整性,您可以覆盖部分日志记录:(在django 1.6上测试):
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
},
'loggers': {
'django.security.DisallowedHost': {
'handlers': ['null'],
'propagate': False,
},
},
}
Run Code Online (Sandbox Code Playgroud)
另请参阅Django安全文档.
要禁止管理员电子邮件,请定义日志记录筛选器:
def skip_suspicious_operations(record):
if record.name == 'django.security.DisallowedHost':
return False
return True
Run Code Online (Sandbox Code Playgroud)
然后在settings.py中将其作为过滤器添加到LOGGING dict中:
'filters': {
'skip_suspicious_operations': {
'()': 'django.utils.log.CallbackFilter',
'callback': skip_suspicious_operations,
}
}
Run Code Online (Sandbox Code Playgroud)
并将过滤器添加到mail_admins处理程序:
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['skip_suspicious_operations'],
'include_html' : True,
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于Django 1.6.在Django-1.5中,我认为与record.name进行比较的RHS有点不同,但除此之外它应该有效.
谷歌搜索一下就会发现,Django 的错误跟踪器中已经存在一个错误:
https://code.djangoproject.com/ticket/19866
在(希望)Django 1.5.1 中出现修复之前,有一个涉及日志过滤器的解决方法。
| 归档时间: |
|
| 查看次数: |
4581 次 |
| 最近记录: |