Browse Source

[WebUI] Escape reserved HTML characters in editor

Issue: #3522
tags/2.7
moisseev 3 years ago
parent
commit
4d726d25c5
2 changed files with 22 additions and 21 deletions
  1. 1
    1
      interface/js/app/config.js
  2. 21
    20
      interface/js/app/rspamd.js

+ 1
- 1
interface/js/app/config.js View File

@@ -170,7 +170,7 @@ define(["jquery", "codejar", "linenumbers", "prism"],
success: function (data) {
var readonly = "";
var icon = "fa-edit";
var text = data[0].data;
var text = rspamd.escapeHTML(data[0].data);
if (item.editable === false || rspamd.read_only) {
readonly = " readonly";
icon = "fa-eye";

+ 21
- 20
interface/js/app/rspamd.js View File

@@ -805,25 +805,26 @@ function ($, D3pie, visibility, NProgress, stickyTabs, tab_stat, tab_graph, tab_
});
};

ui.escapeHTML = function (string) {
var htmlEscaper = /[&<>"'/`=]/g;
var htmlEscapes = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
"\"": "&quot;",
"'": "&#39;",
"/": "&#x2F;",
"`": "&#x60;",
"=": "&#x3D;"
};
return String(string).replace(htmlEscaper, function (match) {
return htmlEscapes[match];
});
};

ui.preprocess_item = function (rspamd, item) {
function escapeHTML(string) {
var htmlEscaper = /[&<>"'/`=]/g;
var htmlEscapes = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
"\"": "&quot;",
"'": "&#39;",
"/": "&#x2F;",
"`": "&#x60;",
"=": "&#x3D;"
};
return String(string).replace(htmlEscaper, function (match) {
return htmlEscapes[match];
});
}
function escape_HTML_array(arr) {
arr.forEach(function (d, i) { arr[i] = escapeHTML(d); });
arr.forEach(function (d, i) { arr[i] = ui.escapeHTML(d); });
}

for (var prop in item) {
@@ -839,9 +840,9 @@ function ($, D3pie, visibility, NProgress, stickyTabs, tab_stat, tab_graph, tab_
if (!sym.name) {
sym.name = key;
}
sym.name = escapeHTML(sym.name);
sym.name = ui.escapeHTML(sym.name);
if (sym.description) {
sym.description = escapeHTML(sym.description);
sym.description = ui.escapeHTML(sym.description);
}

if (sym.options) {
@@ -851,7 +852,7 @@ function ($, D3pie, visibility, NProgress, stickyTabs, tab_stat, tab_graph, tab_
break;
default:
if (typeof item[prop] === "string") {
item[prop] = escapeHTML(item[prop]);
item[prop] = ui.escapeHTML(item[prop]);
}
}
}

Loading…
Cancel
Save