From 6bce6c19a26b42fb2c4218ace945c76b909d9d16 Mon Sep 17 00:00:00 2001 From: Diana Huang Date: Mon, 22 Jul 2013 14:20:18 -0400 Subject: [PATCH] Prevent XSS attack via submission_history page. --- lms/djangoapps/courseware/tests/test_views.py | 25 +++++++++++++++++++ lms/djangoapps/courseware/views.py | 12 ++++----- .../courseware/submission_history.html | 2 +- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lms/djangoapps/courseware/tests/test_views.py b/lms/djangoapps/courseware/tests/test_views.py index 07be74c98e9a..be37a4f0dab9 100644 --- a/lms/djangoapps/courseware/tests/test_views.py +++ b/lms/djangoapps/courseware/tests/test_views.py @@ -7,8 +7,10 @@ from django.contrib.auth.models import User from django.test.client import RequestFactory from django.conf import settings +from django.core.urlresolvers import reverse from student.models import CourseEnrollment +from student.tests.factories import AdminFactory from xmodule.modulestore.django import modulestore import courseware.views as views @@ -148,3 +150,26 @@ def test_chat_settings(self): # generate/store a real password. self.assertEquals(chat_settings['password'], "johndoe@%s" % domain) + def test_submission_history_xss(self): + # log into a staff account + admin = AdminFactory() + + self.client.login(username=admin.username, password='test') + + # try it with an existing user and a malicious location + url = reverse('submission_history', kwargs={ + 'course_id': self.course_id, + 'student_username': 'dummy', + 'location': '' + }) + response = self.client.get(url) + self.assertFalse('', + 'location': 'dummy' + }) + response = self.client.get(url) + self.assertFalse('