Django ALLOWED_HOSTS IPs gamme
Est-il un moyen de définir une plage de ALLOWED_HOSTS IPs dans django?
Quelque chose comme ceci:
ALLOWED_HOSTS = ['172.17.*.*']
J'étais sur le point de répondre "oui", mais fait un peu de google creuser et ne peut pas trouver un exemple précis où quelqu'un a fait cela. Selon le docs, vous pouvez utiliser un seul caractère générique dans la liste, comme
Il serait préférable de déléguer ce à un serveur web qui ont été faites pour gérer efficacement. Ou peut-être même configuration de règles de pare-feu, le plus haut dans la pile d'un trafic pourrait être filtré le mieux.
oui je le fais. Regarde ma réponse ci-dessous. J'ai trouvé la solution à ce problème.
Nice. Je savais que cela pouvait être fait, mais je ne sais pas quel genre de solution que je cherchais. Middleware de sens. @serg la suggestion qu'elle doit être traitée plus haut dans la pile est bonne, mais ce devrait être d'accord pour une relativement faible trafic construire, droit?
suggestion convient particulièrement pour les projets highload beaucoup plus middlware. Mais j'ai été à la recherche pour django niveau de la solution.
ALLOWED_HOSTS = ['*']
, (qui n'est pas recommandé pour des raisons de sécurité), mais j'ai rien vu d'autre comme votre exemple encore. Je suis toujours penchée vers "oui", mais je vais pas convaincu jusqu'à ce que je vois une référence à l'indiquer explicitement. Cela peut être une question stupide, mais avez-vous essayé de voir si il va soulever les erreurs de django?Il serait préférable de déléguer ce à un serveur web qui ont été faites pour gérer efficacement. Ou peut-être même configuration de règles de pare-feu, le plus haut dans la pile d'un trafic pourrait être filtré le mieux.
oui je le fais. Regarde ma réponse ci-dessous. J'ai trouvé la solution à ce problème.
Nice. Je savais que cela pouvait être fait, mais je ne sais pas quel genre de solution que je cherchais. Middleware de sens. @serg la suggestion qu'elle doit être traitée plus haut dans la pile est bonne, mais ce devrait être d'accord pour une relativement faible trafic construire, droit?
suggestion convient particulièrement pour les projets highload beaucoup plus middlware. Mais j'ai été à la recherche pour django niveau de la solution.
OriginalL'auteur Alex T | 2016-05-04
Vous devez vous connecter pour publier un commentaire.
J'ai posté un billet sur Django cependant, j'ai été montré que ce pourrait être obtenue en procédant de la manière suivante
https://code.djangoproject.com/ticket/27485
gethostname()
a été le retour de l'Hyper-V switch ethernet adresse à la place. Vous pouvez utiliserALLOWED_HOSTS = [ gethostname(), ] + gethostbyname_ex(gethostname())[2]
à la place.C'est vraiment utile, l'exécution de Django sur un k8s cluster, où le nœud est inconnue jusqu'à ce que l'exécution.
N'est-il pas dangereux?
Je ne vois pas pourquoi c'est dangereux
Parce qu'il fonctionne comme ["*"]
OriginalL'auteur Thomas Turner
Non, ce n'est pas possible actuellement. Selon les docs, la syntaxe suivante est pris en charge:
Si vous regardez à la mise en œuvre de la
validate_host
méthode, vous pouvez voir que l'utilisation de*
comme un caractère générique n'est pas pris en charge.OriginalL'auteur Alasdair
Ici est un moyen rapide et sale de la solution.
['172.17.{}.{}'.format(i,j) for i in range(256) for j in range(256)]
Même que ci-dessus en utilisant le format. L'aimer.['192.168.1.{}'.format(i) for i in range(256)]
Merci, je voulais juste faire remarquer que vous pouvez aussi le faire, si vous savez besoin seulement le dernier numéro comme je l'ai fait.OriginalL'auteur Ivandir
Mozilla a sorti un paquet Python appelé django-permettez-cidr qui est conçu pour résoudre ce problème.
La annonce post de blog explique que c'est utile pour des choses comme des contrôles de santé qui n'ont pas de
Host
en-tête et il suffit d'utiliser une adresse IP.Vous aurez à changer votre adresse IP
'172.17.*.*'
légèrement pour être un CIDR gamme comme172.17.0.0/16
OriginalL'auteur alexmuller
J'ai trouvé la solution pour le filtrage plage d'adresses ip:
https://stackoverflow.com/a/36222755/3766751
À l'aide de cette approche, nous pouvons filtre IPs par tous les moyens (f.e. avec la regex).
Merci pour @Zorgmorduk
OriginalL'auteur Alex T