From 4e4c209ae3deb4c78bcec89c181516af8604b450 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Mon, 1 Jul 2013 16:01:50 -0400 Subject: [PATCH] Fix LMS-530, reflected XSS Limit the page and chapter numbers to digits, to keep malicious URL components from being inserted onto the page. Conflicts: lms/urls.py --- lms/urls.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lms/urls.py b/lms/urls.py index 776a518599..fe9882b180 100644 --- a/lms/urls.py +++ b/lms/urls.py @@ -223,27 +223,27 @@ if settings.COURSEWARE_ENABLED: 'courseware.views.course_info', name="info"), url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/syllabus$', 'courseware.views.syllabus', name="syllabus"), # TODO arjun remove when custom tabs in place, see courseware/courses.py - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/book/(?P[^/]*)/$', + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/book/(?P\d+)/$', 'staticbook.views.index', name="book"), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/book/(?P[^/]*)/(?P[^/]*)$', + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/book/(?P\d+)/(?P\d+)$', 'staticbook.views.index'), url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/book-shifted/(?P[^/]*)$', 'staticbook.views.index_shifted'), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P[^/]*)/$', + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P\d+)/$', + 'staticbook.views.pdf_index', name="pdf_book"), + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P\d+)/(?P\d+)$', 'staticbook.views.pdf_index', name="pdf_book"), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P[^/]*)/(?P[^/]*)$', - 'staticbook.views.pdf_index'), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P[^/]*)/chapter/(?P[^/]*)/$', - 'staticbook.views.pdf_index'), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P[^/]*)/chapter/(?P[^/]*)/(?P[^/]*)$', - 'staticbook.views.pdf_index'), + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P\d+)/chapter/(?P\d+)/$', + 'staticbook.views.pdf_index', name="pdf_book"), + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/pdfbook/(?P\d+)/chapter/(?P\d+)/(?P\d+)$', + 'staticbook.views.pdf_index', name="pdf_book"), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/htmlbook/(?P[^/]*)/$', + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/htmlbook/(?P\d+)/$', + 'staticbook.views.html_index', name="html_book"), + url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/htmlbook/(?P\d+)/chapter/(?P\d+)/$', 'staticbook.views.html_index', name="html_book"), - url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/htmlbook/(?P[^/]*)/chapter/(?P[^/]*)/$', - 'staticbook.views.html_index'), url(r'^courses/(?P[^/]+/[^/]+/[^/]+)/courseware/?$', 'courseware.views.index', name="courseware"),