summaryrefslogtreecommitdiff
path: root/tests/requests/tests.py
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-10-17 12:14:49 -0400
committerTim Graham <timograham@gmail.com>2016-11-01 09:36:44 -0400
commit884e113838e5a72b4b0ec9e5e87aa480f6aa4472 (patch)
tree97ce5e895dfd3c655d10983c3805725e641db6a6 /tests/requests/tests.py
parent34e10720d81b8d407aa14d763b6a7fe8f13b4f2e (diff)
[1.10.x] Fixed CVE-2016-9014 -- Validated Host header when DEBUG=True.
This is a security fix.
Diffstat (limited to 'tests/requests/tests.py')
-rw-r--r--tests/requests/tests.py29
1 files changed, 15 insertions, 14 deletions
diff --git a/tests/requests/tests.py b/tests/requests/tests.py
index b015e6dfff..c4277ba495 100644
--- a/tests/requests/tests.py
+++ b/tests/requests/tests.py
@@ -756,21 +756,22 @@ class HostValidationTests(SimpleTestCase):
self.assertEqual(request.get_port(), '8080')
@override_settings(DEBUG=True, ALLOWED_HOSTS=[])
- def test_host_validation_disabled_in_debug_mode(self):
- """If ALLOWED_HOSTS is empty and DEBUG is True, all hosts pass."""
- request = HttpRequest()
- request.META = {
- 'HTTP_HOST': 'example.com',
- }
- self.assertEqual(request.get_host(), 'example.com')
+ def test_host_validation_in_debug_mode(self):
+ """
+ If ALLOWED_HOSTS is empty and DEBUG is True, variants of localhost are
+ allowed.
+ """
+ valid_hosts = ['localhost', '127.0.0.1', '[::1]']
+ for host in valid_hosts:
+ request = HttpRequest()
+ request.META = {'HTTP_HOST': host}
+ self.assertEqual(request.get_host(), host)
- # Invalid hostnames would normally raise a SuspiciousOperation,
- # but we have DEBUG=True, so this check is disabled.
- request = HttpRequest()
- request.META = {
- 'HTTP_HOST': "invalid_hostname.com",
- }
- self.assertEqual(request.get_host(), "invalid_hostname.com")
+ # Other hostnames raise a SuspiciousOperation.
+ with self.assertRaises(SuspiciousOperation):
+ request = HttpRequest()
+ request.META = {'HTTP_HOST': 'example.com'}
+ request.get_host()
@override_settings(ALLOWED_HOSTS=[])
def test_get_host_suggestion_of_allowed_host(self):