C'è un modo per impostare un intervallo di IP ALLOWED_HOSTS in django?Django ALLOWED_HOSTS Intervallo IP
Qualcosa di simile a questo:
ALLOWED_HOSTS = ['172.17.*.*']
C'è un modo per impostare un intervallo di IP ALLOWED_HOSTS in django?Django ALLOWED_HOSTS Intervallo IP
Qualcosa di simile a questo:
ALLOWED_HOSTS = ['172.17.*.*']
ho postato un biglietto su Django però mi è stato mostrato questo potrebbe essere realizzato nel modo seguente
from socket import gethostname, gethostbyname
ALLOWED_HOSTS = [ gethostname(), gethostbyname(gethostname()), ]
L'aggiornamento dei creatori di fall per Windows 10 ha rotto questo metodo per me, poiché 'gethostname()' restituiva invece l'indirizzo dello switch ethernet Hyper-V. Puoi usare 'ALLOWED_HOSTS = [gethostname(),] + gethostbyname_ex (gethostname()) [2]' invece. –
No, questo non è possibile. Secondo the docs, la seguente sintassi è supportata:
['www.example.com'] # Fully qualified domain
['.example.com'] # Subdomain wildcard, matches example.com and www.example.com
['*'] # Matches anything
Se si guarda l'attuazione del metodo validate_host
, si può vedere che usando *
come un jolly non è supportata.
Aha, grazie. Non stavo guardando abbastanza da leggere il codice stesso. – Nez
ho trovato questa soluzione per il filtraggio gamma di IP:
https://stackoverflow.com/a/36222755/3766751
Usando questo approccio siamo in grado di filtrare gli IP con qualsiasi mezzo (f.e. con espressioni regolari).
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
Grazie per @Zorgmorduk
Ecco una rapida e soluzione sporca.
allowed_hosts + = [ '172.17.% S.% S' % (i, j) per i in range (256) per j nella gamma (256)]
Stavo per rispondere "sì", ma ha fatto qualche ricerca su google e non riesce a trovare un esempio specifico in cui qualcuno lo abbia fatto. Secondo [docs] (https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts), puoi usare un jolly solitario nell'elenco, come 'ALLOWED_HOSTS = ['*'] ', (che non è raccomandato per motivi di sicurezza) ma non ho ancora visto niente come il tuo esempio. Sono ancora incline al "sì" ma non sarò convinto finché non vedrò un riferimento che lo dichiari esplicitamente. Questa potrebbe essere una domanda stupida, ma l'hai provata per vedere se farà sorgere qualche errore in django? – Nez
Sarebbe meglio scaricarlo su un server Web che è stato creato per gestirlo in modo efficiente. O forse persino impostare le regole del firewall, maggiore è la quantità di traffico che può essere filtrata meglio è. – serg
@Nez, si lo faccio. Guarda la mia risposta qui sotto. Ho trovato la soluzione per questo problema. –