diff --git a/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee b/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee index 9c42456d86..a6d018b9bf 100644 --- a/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee +++ b/common/static/coffee/spec/discussion/view/discussion_thread_view_spec.coffee @@ -124,6 +124,32 @@ describe "DiscussionThreadView", -> expect($(".post-body").text()).toEqual(expectedAbbreviation) expect(DiscussionThreadShowView.prototype.convertMath).toHaveBeenCalled() + it "strips script tags appropriately", -> + DiscussionViewSpecHelper.setNextResponseContent({resp_total: 0, children: []}) + longMaliciousBody = new Array(100).join("\n") + @thread.set("body", longMaliciousBody) + maliciousAbbreviation = DiscussionUtil.abbreviateString(@thread.get('body'), 140) + + # The nodes' html should be different than the strings, but + # their texts should be the same, indicating that they've been + # properly escaped. To be safe, make sure the string " beforeEach -> @thread.set("thread_type", "question") diff --git a/common/static/coffee/src/discussion/views/discussion_thread_view.coffee b/common/static/coffee/src/discussion/views/discussion_thread_view.coffee index 5d312051ed..eacbd5e866 100644 --- a/common/static/coffee/src/discussion/views/discussion_thread_view.coffee +++ b/common/static/coffee/src/discussion/views/discussion_thread_view.coffee @@ -62,7 +62,7 @@ if Backbone? if event event.preventDefault() @$el.addClass("expanded") - @$el.find(".post-body").html(@model.get("body")) + @$el.find(".post-body").text(@model.get("body")) @showView.convertMath() @$el.find(".forum-thread-expand").hide() @$el.find(".forum-thread-collapse").show() @@ -74,7 +74,7 @@ if Backbone? if event event.preventDefault() @$el.removeClass("expanded") - @$el.find(".post-body").html(@getAbbreviatedBody()) + @$el.find(".post-body").text(@getAbbreviatedBody()) @showView.convertMath() @$el.find(".forum-thread-expand").show() @$el.find(".forum-thread-collapse").hide()