Browse Source

Fix XSS in ClassTagsView. Closes #4076

pull/4093/head
Artur Arseniev 4 years ago
parent
commit
ecebc48550
  1. 10
      src/selector_manager/view/ClassTagsView.js

10
src/selector_manager/view/ClassTagsView.js

@ -1,6 +1,7 @@
import { isEmpty, isArray, isString, debounce } from 'underscore'; import { isEmpty, isArray, isString, debounce } from 'underscore';
import Backbone from 'backbone'; import Backbone from 'backbone';
import ClassTagView from './ClassTagView'; import ClassTagView from './ClassTagView';
import html from 'utils/html';
export default Backbone.View.extend({ export default Backbone.View.extend({
template({ labelInfo, labelHead, iconSync, iconAdd, pfx, ppfx }) { template({ labelInfo, labelHead, iconSync, iconAdd, pfx, ppfx }) {
@ -257,19 +258,20 @@ export default Backbone.View.extend({
let result; let result;
if (isString(target)) { if (isString(target)) {
result = `<span class="${pfx}sel-gen">${target}</span>`; result = html`<span class="${pfx}sel-gen">${target}</span>`;
} else { } else {
const sel = target && target.get && target.getSelectors(); const sel = target && target.get && target.getSelectors();
if (!sel) return; if (!sel) return;
const selectors = sel.getStyleable(); const selectors = sel.getStyleable();
const state = em.get('state'); const state = em.get('state');
const idRes = target.getId const idRes = target.getId
? `<span class="${pfx}sel-cmp">${target.getName()}</span><span class="${pfx}sel-id">#${target.getId()}</span>` ? html`<span class="${pfx}sel-cmp">${target.getName()}</span
><span class="${pfx}sel-id">#${target.getId()}</span>`
: ''; : '';
result = this.collection.getFullString(selectors); result = this.collection.getFullString(selectors);
result = result ? `<span class="${pfx}sel-rule">${result}</span>` : target.get('selectorsAdd') || idRes; result = result ? html`<span class="${pfx}sel-rule">${result}</span>` : target.get('selectorsAdd') || idRes;
result = componentFirst && idRes ? idRes : result; result = componentFirst && idRes ? idRes : result;
result += state ? `<span class="${pfx}sel-state">:${state}</span>` : ''; result += state ? html`<span class="${pfx}sel-state">:${state}</span>` : '';
result = selectedName ? selectedName({ result, state, target }) : result; result = selectedName ? selectedName({ result, state, target }) : result;
} }

Loading…
Cancel
Save