Escape HTML in mentions box

This commit is contained in:
Steffen van Bergerem 2016-08-10 17:19:58 +02:00
parent edd568007d
commit d9746a8461
No known key found for this signature in database
GPG key ID: 2F08F75F9525C7E0
3 changed files with 14 additions and 1 deletions

View file

@ -91,7 +91,7 @@ app.views.PublisherMention = app.views.SearchBase.extend({
*/ */
updateMessageTexts: function() { updateMessageTexts: function() {
var fakeMessageText = this.inputBox.val(), var fakeMessageText = this.inputBox.val(),
mentionBoxText = fakeMessageText, mentionBoxText = _.escape(fakeMessageText),
messageText = fakeMessageText; messageText = fakeMessageText;
this.mentionedPeople.forEach(function(person) { this.mentionedPeople.forEach(function(person) {

View file

@ -196,6 +196,12 @@ Feature: posting from the main page
And I select only "NotPostingThingsHere" aspect And I select only "NotPostingThingsHere" aspect
Then I should not see "I am eating a yogurt" and "And cornflakes also" Then I should not see "I am eating a yogurt" and "And cornflakes also"
Scenario: Write html in the publisher
When I expand the publisher
Then I should not see any alert after I write the status message "<script>alert();</script>"
When I submit the publisher
Then "<script>alert();</script>" should be post 1
# (NOTE) make this a jasmine spec # (NOTE) make this a jasmine spec
Scenario: reject deletion one of my posts Scenario: reject deletion one of my posts
When I expand the publisher When I expand the publisher

View file

@ -197,6 +197,13 @@ describe("app.views.PublisherMention", function() {
expect(this.view.mentionsBox.find(".mentions").html()) expect(this.view.mentionsBox.find(".mentions").html())
.toBe("@user1 Text before <strong><span>user1</span></strong>\ntext after"); .toBe("@user1 Text before <strong><span>user1</span></strong>\ntext after");
}); });
it("properly escapes the user input", function() {
this.view.inputBox.val("<img src=\"/default.png\"> @user1 Text before \u200Buser1\ntext after");
this.view.updateMessageTexts();
expect(this.view.mentionsBox.find(".mentions").html())
.toBe("&lt;img src=\"/default.png\"&gt; @user1 Text before <strong><span>user1</span></strong>\ntext after");
});
}); });
describe("updateTypeaheadInput", function() { describe("updateTypeaheadInput", function() {