session_cookie_name meet example every authentication_backends allowed_hosts allow all django django-settings

meet - Django ALLOWED_HOSTS rango de IPs



session_cookie_name django (5)

Aquí hay una solución rápida y sucia.

ALLOWED_HOSTS += [''172.17.{}.{}''.format(i,j) for i in range(256) for j in range(256)]

¿Hay alguna manera de establecer un rango de IPs ALLOWED_HOSTS en django?

Algo como esto:

ALLOWED_HOSTS = [''172.17.*.*'']


He encontrado tal solución para filtrar el rango de direcciones IP:

https://.com/a/36222755/3766751

Usando este enfoque, podemos filtrar las IP por cualquier medio (fe con expresiones regulares).

from django.http import HttpResponseForbidden class FilterHostMiddleware(object): def process_request(self, request): allowed_hosts = [''127.0.0.1'', ''localhost''] # specify complete host names here host = request.META.get(''HTTP_HOST'') if host[len(host)-10:] == ''dyndns.org'': # if the host ends with dyndns.org then add to the allowed hosts allowed_hosts.append(host) elif host[:7] == ''192.168'': # if the host starts with 192.168 then add to the allowed hosts allowed_hosts.append(host) if host not in allowed_hosts: raise HttpResponseForbidden return None

Gracias por @Zorgmorduk


Mozilla ha lanzado un paquete de Python llamado django-allow-cidr que está diseñado para resolver exactamente este problema.

La publicación del blog del anuncio explica que es útil para cosas como controles de estado que no tienen un encabezado de Host y solo usan una dirección IP.

Tendría que cambiar su dirección IP ''172.17.*.*'' Ligeramente para ser un rango CIDR como 172.17.0.0/16


No, esto no es posible actualmente. Según los documentos , se admite la siguiente sintaxis:

[''www.example.com''] # Fully qualified domain [''.example.com''] # Subdomain wildcard, matches example.com and www.example.com [''*''] # Matches anything

Si observa la implementación del método validate_host , puede ver que no se admite el uso de * como comodín.


Publiqué un ticket en Django; sin embargo, se me mostró que esto podría lograrse haciendo lo siguiente

from socket import gethostname, gethostbyname ALLOWED_HOSTS = [ gethostname(), gethostbyname(gethostname()), ]

https://code.djangoproject.com/ticket/27485