С момента установки установки ALLOWED_HOSTS в django 1.4.4 я получаю много писем с ошибками django на мой адрес администратора для исключений, вызванных каким-то глупым пауком, который ищет уязвимые установки phpMyAdmin или что-то подобное. Эти письма полностью действительны, поскольку заголовки хостов в запросах пауков действительно ошибочны, но я предпочел бы, чтобы django отправлял мне сообщения об ошибках, когда что-то не так. Есть ли простой способ отключить почту SuspiciousOperation
, или мне нужно пройти весь путь и подкласс CommonMiddleware
?Подавление электронной почты администратора по django исключение ALLOWED_HOSTS
ответ
Немного прибегая к помощи показал бы, что уже есть ошибка в системе отслеживания ошибок в Django для этого:
https://code.djangoproject.com/ticket/19866
До тех пор, пока исправление в (надеюсь) Django 1.5.1, есть workaround с участием фильтр журнала.
Если вы используете apache, вы можете отфильтровать трафик на разные хосты из httpd.conf - это намного проще, чем писать любой код. Что-то вроде
WSGIPythonPath [your Python path]
ServerSignature Off
ServerTokens Prod
<VirtualHost *:80>
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
ServerName www.myrealhost.com
rest of apache configuration ....
</VirtualHost>
Первая установка будет захватывать все, что не соответствует имени сервера (например www.myrealhost.com)
Это отличная идея, но я нахожусь на совместном хостинге, к сожалению ... – Simon
Для подавления администратора электронной почты, определить протоколирования фильтр:
def skip_suspicious_operations(record):
if record.name == 'django.security.DisallowedHost':
return False
return True
Затем в settings.py добавить его в LOGGING Словаре в качестве фильтра:
'filters': {
'skip_suspicious_operations': {
'()': 'django.utils.log.CallbackFilter',
'callback': skip_suspicious_operations,
}
}
и добавить тыс e фильтру к обработчику mail_admins:
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['skip_suspicious_operations'],
'include_html' : True,
}
}
Это работает в Django 1.6 как есть. В Django-1.5 я думаю, что RHS сравнения с record.name немного отличается, но в остальном он должен работать.
Я думаю, вам также нужны «регистраторы» с ключом для «django.security» внутри dictging LOGGING, чтобы фактически поймать эти сообщения. –
Почему вы проверяете record.name вместо isinstance (запись, DisallowedHost)? –
Но подождите, есть приложение для этого!
Для полноты можно переопределить части протоколирования: (проверено на Джанго 1.6):
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
},
'loggers': {
'django.security.DisallowedHost': {
'handlers': ['null'],
'propagate': False,
},
},
}
Также см Django security docs.
Так что я обычно предпочитаю просто перенаправлять всех непревзойденных vhosts на один vhost. это делается с помощью простого добавления к файлу apache.conf ...
<VirtualHost *:80>
RedirectMatch ^/?(.*) http://www.example.com/$1
</VirtualHost>
В приведенных выше примере приведет к запросу любого непревзойденному виртуальному хосту для перенаправления http://www.example.com, сохраняя при этом компоненте пути правильно.
Это также имеет дополнительное преимущество при исправлении случая, когда пользователь выполняет недопустимый запрос или какую-то такую вещь.
- 1. Django: настройка отправки электронной почты
- 2. Django ALLOWED_HOSTS IPs range
- 3. Отправка электронной почты и добавление параметра для регистрации администратора django
- 4. Разрешить сотрудникам редактировать данные электронной почты через сайт администратора django?
- 5. Конфигурация электронной почты Django с сервером электронной почты Bluehost
- 6. Django - приложение электронной почты
- 7. django отправка электронной почты
- 8. Django ALLOWED_HOSTS с ELB HealthCheck
- 9. Как получить адрес электронной почты пользователя и администратора электронной почты в шаблоне электронной почты в odoo
- 10. Исключение при отправке электронной почты
- 11. Отправка электронной почты VB.net Исключение
- 12. Ошибка шаблона электронной почты Django
- 13. шаблон электронной почты в django
- 14. Получить адрес электронной почты администратора приложения Rails
- 15. Получить администратора электронной почты, используя wss 3.0
- 16. Отправка электронной почты в django.
- 17. Тестирование Django электронной почты бэкенд
- 18. Ошибка отправки электронной почты Django
- 19. Django прикрепление файла электронной почты
- 20. Приложение Django для электронной почты
- 21. Django отправка по электронной почте
- 22. Подавление Django mod_wsgi IOErrors
- 23. Django администратора по умолчанию фильтр
- 24. Исключение регистрации и отправки электронной почты
- 25. Развертывание приложения django с docker, ALLOWED_HOSTS
- 26. django ALLOWED_HOSTS перенаправляет на локальный ip
- 27. Django ALLOWED_HOSTS эквивалент для запрещенного хоста?
- 28. Подавление уведомлений по электронной почте, когда setSharing в GAS
- 29. Отчет электронной почты SSRS по электронной почте
- 30. Django-registration - Отправка электронной почты по асинхронному способу
Эта ошибка не направлена на отправку электронного сообщения о подозрительной операции - речь идет о отправке ответа «500» вместо «400». Он был исправлен в Django 1.6, но электронная почта администратора по-прежнему создается. – Nils