From b734fc1932ebda7c6786a4198dc70f907eea8379 Mon Sep 17 00:00:00 2001 From: Sohom Date: Fri, 29 Sep 2023 15:47:53 +0200 Subject: [PATCH] Prevent multiple messages from causing XSS Bug: T347704 Change-Id: I0aa51ec486001fe136fc0b5364d456c2b48d94da --- .../models/ext.pageTriage.article.js | 2 +- .../ext.pageTriage.listControlNav.js | 43 +++++++++++-------- .../ext.pageTriage.listView.js | 2 +- .../ext.pageTriage.views.toolbar/ToolView.js | 4 +- .../articleInfo.js | 2 +- 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/modules/ext.pageTriage.util/models/ext.pageTriage.article.js b/modules/ext.pageTriage.util/models/ext.pageTriage.article.js index 578cd4d7..a5416053 100644 --- a/modules/ext.pageTriage.util/models/ext.pageTriage.article.js +++ b/modules/ext.pageTriage.util/models/ext.pageTriage.article.js @@ -107,7 +107,7 @@ const Article = Backbone.Model.extend( { ) ); } else if ( article.get( 'creator_hidden' ) ) { - article.set( 'author_byline_html', mw.msg( 'rev-deleted-user' ) ); + article.set( 'author_byline_html', $( '' ).text( mw.msg( 'rev-deleted-user' ) ).html() ); } // Are there any PageTriage messages on the talk page? diff --git a/modules/ext.pageTriage.views.list/ext.pageTriage.listControlNav.js b/modules/ext.pageTriage.views.list/ext.pageTriage.listControlNav.js index ba3f2b94..75d89a4b 100644 --- a/modules/ext.pageTriage.views.list/ext.pageTriage.listControlNav.js +++ b/modules/ext.pageTriage.views.list/ext.pageTriage.listControlNav.js @@ -118,7 +118,7 @@ const ListControlNav = Backbone.View.extend( { // make a reset button $( '#mwe-pt-filter-reset-button' ).button( { - label: mw.msg( 'pagetriage-filter-reset-button' ) + label: $( '' ).text( mw.msg( 'pagetriage-filter-reset-button' ) ).html() } ); $( '#mwe-pt-filter-reset-button' ).on( 'click', function ( e ) { that.model.setParams( that.model.defaultApiParams ); @@ -136,7 +136,7 @@ const ListControlNav = Backbone.View.extend( { // make a submit button $( '#mwe-pt-filter-set-button' ).button( { - label: mw.msg( 'pagetriage-filter-set-button' ) + label: $( '' ).text( mw.msg( 'pagetriage-filter-set-button' ) ).html() } ); $( '#mwe-pt-filter-set-button' ).on( 'click', function ( e ) { that.filterSync(); @@ -798,14 +798,19 @@ const ListControlNav = Backbone.View.extend( { * @return {string} */ getDateRangeFilterSectionHtml: function ( context ) { - return '' + - '' + mw.msg( 'pagetriage-filter-date-range-heading' ) + '' + - '' + - '
' + - this.getDateRangeFilterFieldsHtml( context, 'from' ) + - '
' + - this.getDateRangeFilterFieldsHtml( context, 'to' ) + - '
'; + return $( '' ) + .attr( 'class', 'mwe-pt-control-label' ) + .append( + $( '' ).text( mw.msg( 'pagetriage-filter-date-range-heading' ) + ) + ).html() + + $( '
' ) + .attr( 'class', 'mwe-pt-control-options' ) + .append( + this.getDateRangeFilterFieldsHtml( context, 'from' ) + + '
' + + this.getDateRangeFilterFieldsHtml( context, 'to' ) + ).html(); }, /** @@ -816,14 +821,16 @@ const ListControlNav = Backbone.View.extend( { * @return {string} */ getDateRangeFilterFieldsHtml: function ( context, dateRangeType ) { - return '' + - ''; + return $( '