diff options
| author | Tim Graham <timograham@gmail.com> | 2016-10-17 12:14:49 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-11-01 09:30:57 -0400 |
| commit | 7fe2d8d940fdddd1a02c4754008a27060c4a03e9 (patch) | |
| tree | a688aff3e3a2f9f53729b60aa40098c4b9981e9f /django/http | |
| parent | da7910d4834726eca596af0a830762fa5fb2dfd9 (diff) | |
Fixed CVE-2016-9014 -- Validated Host header when DEBUG=True.
This is a security fix.
Diffstat (limited to 'django/http')
| -rw-r--r-- | django/http/request.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/django/http/request.py b/django/http/request.py index 6846068c2f..73858c5abd 100644 --- a/django/http/request.py +++ b/django/http/request.py @@ -96,12 +96,13 @@ class HttpRequest(object): """Return the HTTP host using the environment or request headers.""" host = self._get_raw_host() - # There is no hostname validation when DEBUG=True - if settings.DEBUG: - return host + # Allow variants of localhost if ALLOWED_HOSTS is empty and DEBUG=True. + allowed_hosts = settings.ALLOWED_HOSTS + if settings.DEBUG and not allowed_hosts: + allowed_hosts = ['localhost', '127.0.0.1', '[::1]'] domain, port = split_domain_port(host) - if domain and validate_host(domain, settings.ALLOWED_HOSTS): + if domain and validate_host(domain, allowed_hosts): return host else: msg = "Invalid HTTP_HOST header: %r." % host |
