Django reçoit beaucoup de SuspiciousOperation: En-tête HTTP_HOST invalide

J’utilise Django 1.5, Apache, mod_wsgi et python 2.7, debian hébergé sur linode.

Depuis que je suis passé de django 1.3 à django 1.5, j’ai commencé à recevoir des messages d’erreur, par exemple: “ERREUR (IP EXTERNE): Erreur interne du serveur: / feed /”. Avec cette traceback:

Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 92, in get_response response = middleware_method(request) File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py", line 57, in process_request host = request.get_host() File "/usr/local/lib/python2.7/dist-packages/django/http/request.py", line 72, in get_host "Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host) SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): tadjenanet.montadamoslim.com 

Mais, il y a quelques jours, le volume de ces erreurs a considérablement augmenté, et pour beaucoup d’url que je n’ai même pas sur mon site.

J’ai vu les réponses ici ( l’en-tête HTTP_HOST de Django, SuspiciousOperation Invalid ) et je comprends pourquoi je l’obtiens, mais je dois savoir comment éviter que cela augmente la sécurité de mon serveur.

Fondamentalement, vous ne pouvez pas éviter qu’un attaquant vous envoie ce type de requêtes. La plupart de ces attaques proviennent d’outils de test de pénétration automatique tels que metasploit ou W3AF . Heureusement, ces tentatives ne sont pas un problème pour Django 1.5 ou supérieur. Pour éviter l’inondation du journal, vous pouvez configurer votre serveur Web pour filtrer les en-têtes HTTP_HOST qui ne correspondent pas à votre domaine de site Web. Désolé, je ne peux pas vous aider à le faire avec Apache, si vous utilisez Nginx, cet article peut vous aider http://www.acloudtree.com/how-to-deny-hosts-using-nginx/

À votre santé!