Od wprowadzenia ALLOWED_HOSTS ustawień w Django 1.4.4, dostaję dużo maili błędów Django na mój adres administratora wyjątków wywołanych przez jakiegoś głupiego pająka szuka wrażliwych instalacji phpMyAdmin lub somesuch. Te wiadomości są całkowicie poprawne, ponieważ nagłówki hostów w żądaniach pająków są rzeczywiście błędne, ale wolałbym, aby django wysyłał mi tylko komunikaty o błędach, gdy ważne rzeczy się nie powiodą. Czy istnieje prosta metoda, aby uciszyć maile, czy też muszę przejść całą drogę i podklasę CommonMiddleware
?zwalczaniu Administrator e-mail na django ALLOWED_HOSTS wyjątkiem
Odpowiedz
Trochę googlowania by wykazały, że nie ma już błąd w Django bug tracker na to:
https://code.djangoproject.com/ticket/19866
Dopóki nie będzie naprawić w (miejmy nadzieję) Django 1.5.1, istnieje workaround udziałem filtr dziennika.
Jeśli używasz Apache możesz filtrować ruch do różnych hostów z httpd.conf - jest to o wiele prostsze rozwiązanie niż pisanie jakiegokolwiek kodu. Coś jak
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>
Pierwsze ustawienie przechwyci wszystko, co nie pasuje do nazwy serwera (np www.myrealhost.com)
To świetny pomysł, ale niestety udostępniam hosting ... – Simon
Aby stłumić e-mail administratora, zdefiniować filtr rejestrowania:
def skip_suspicious_operations(record):
if record.name == 'django.security.DisallowedHost':
return False
return True
Następnie w settings.py dodaj go do dict pozyskiwania drewna filtra:
'filters': {
'skip_suspicious_operations': {
'()': 'django.utils.log.CallbackFilter',
'callback': skip_suspicious_operations,
}
}
i dodać th e filtr do programu obsługi mail_admins:
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['skip_suspicious_operations'],
'include_html' : True,
}
}
Działa w Django 1.6, jak jest. W Django-1.5 myślę, że RHS porównania z record.name jest trochę inne, ale w przeciwnym razie powinno działać.
Myślę, że potrzebujesz również "rejestratorów" z kluczem dla "django.security" wewnątrz DYSKU LOGOWANIA, aby faktycznie złapać te wiadomości. –
dlaczego sprawdzasz record.name zamiast isinstance (record, DisallowedHost)? –
Ale czekaj, jest na to aplikacja!
Dla kompletności można zastąpić części logowania: (testowane na 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,
},
},
}
zobaczyć również Django security docs.
Zazwyczaj wolę przekierować wszystkie niedopasowane vhosty do pojedynczego vhosta. odbywa się to za pomocą prostego oprócz pliku apache.conf ...
<VirtualHost *:80>
RedirectMatch ^/?(.*) http://www.example.com/$1
</VirtualHost>
Powyższy przykład spowodowałoby żądanie każdej niezrównaną vhost przekierować do http://www.example.com, zachowując składnik ścieżki poprawnie.
Ma to również dodatkową zaletę polegającą na korygowaniu przypadku, w którym użytkownik śledzi nieprawidłowe żądanie lub coś takiego.
- 1. Django email
- 2. Administrator Django w linii
- 3. Administrator Django GenericForeignKey wbudowany
- 4. Czy na Heroku jest ALLOWED_HOSTS?
- 5. Testowanie Django email backend
- 6. email szablonów w Django
- 7. Django Administrator: Pokaż listę modeli
- 8. Administrator Django spersonalizuj zapytanie search_fields
- 9. Django nie można znaleźć staticfiles z Debug = False i Allowed_Hosts
- 10. Administrator Django, sekcja bez "modelu"?
- 11. Administrator Django edytujący pola w sposób tabelaryczny
- 12. Administrator Django: przekazanie zmiennej przez URL
- 13. Administrator Django: czy mogę zdefiniować kolejność pól?
- 14. Administrator Django - niestandardowy widok listy zmian
- 15. Administrator Django: brakuje inlines dla niektórych rekordów
- 16. django-allauth email HTML nie wysyłać
- 17. Czy administrator Django jest trudny do dostosowania?
- 18. Administrator Django i wyświetlanie miniatur obrazów
- 19. Administrator Django - zmiana tekstu wyświetlania obcego klucza
- 20. Administrator Django: Jak wyczyścić panel Ostatnie działania
- 21. Administrator Django, niestandardowy komunikat o błędzie?
- 22. Administrator Django - jak zrobić "inlines" składane?
- 23. Administrator Django wbudowany w głęboką relację
- 24. zwalczaniu stderr ciągu subprocess.check_output()
- 25. Administrator sonaty - administrator podrzędny klasa
- 26. Django unikalny = True wyjątkiem pustych wartości
- 27. Podział osoby [0] .email na ["osoba", "0", "email"]
- 28. zwalczaniu ładowania wtyczki w WebKit
- 29. Dozwolone ustawienie hosta dla Django na EC2
- 30. zwalczaniu Android przychodzące aktywny pojawianiu
Błąd ten nie dotyczy wysłania wiadomości e-mail dotyczącej podejrzanej operacji - chodzi o wysłanie odpowiedzi "500" zamiast "400". Zostało to naprawione w Django 1.6, ale e-mail administratora jest nadal generowany. – Nils