Add require_https to all is_safe_url calls

This commit is contained in:
Michael Youngstrom
2018-06-06 11:43:57 -04:00
parent ca0ec641db
commit d6616c9036
5 changed files with 8 additions and 10 deletions

View File

@@ -329,7 +329,7 @@ def get_redirect_to(request):
# get information about a user on edx.org. In any such case drop the parameter.
if redirect_to:
mime_type, _ = mimetypes.guess_type(redirect_to, strict=False)
if not http.is_safe_url(redirect_to, allowed_hosts={request.get_host()}):
if not http.is_safe_url(redirect_to, allowed_hosts={request.get_host()}, require_https=True):
log.warning(
u'Unsafe redirect parameter detected after login page: %(redirect_to)r',
{"redirect_to": redirect_to}

View File

@@ -66,7 +66,6 @@ class TestLoginHelper(TestCase):
@ddt.data(
('/dashboard', 'testserver', '/dashboard'),
('http://testserver/courses', 'testserver', 'http://testserver/courses'),
('https://edx.org/courses', 'edx.org', 'https://edx.org/courses'),
)
@ddt.unpack

View File

@@ -747,7 +747,7 @@ class LogoutView(TemplateView):
"""
target_url = self.request.GET.get('redirect_url')
if target_url and is_safe_url(target_url, allowed_hosts={self.request.META.get('HTTP_HOST')}):
if target_url and is_safe_url(target_url, allowed_hosts={self.request.META.get('HTTP_HOST')}, require_https=True):
return target_url
else:
return self.default_target