diff options
author | Côme Chilliet <come.chilliet@nextcloud.com> | 2024-01-11 12:18:25 +0100 |
---|---|---|
committer | Côme Chilliet <come.chilliet@nextcloud.com> | 2024-01-15 11:50:48 +0100 |
commit | 8766a90cffbc9ba0dd6f36c744f3f91968d8b65c (patch) | |
tree | 7fb86e75e9bb916cbe7ae59ef3d20f3344e7ba2d /core/js | |
parent | d48151508146f38847125f857e0fcf5499514d64 (diff) | |
download | nextcloud-server-8766a90cffbc9ba0dd6f36c744f3f91968d8b65c.tar.gz nextcloud-server-8766a90cffbc9ba0dd6f36c744f3f91968d8b65c.zip |
Properly escape HTML and add support for highlight links in setupchecks
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'core/js')
-rw-r--r-- | core/js/setupchecks.js | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js index 646e583ea45..99e289e5e54 100644 --- a/core/js/setupchecks.js +++ b/core/js/setupchecks.js @@ -307,6 +307,15 @@ return deferred.promise(); }, + escapeHTML: function(text) { + return text.toString() + .split('&').join('&') + .split('<').join('<') + .split('>').join('>') + .split('"').join('"') + .split('\'').join(''') + }, + /** * @param message The message string containing placeholders. * @param parameters An object with keys as placeholders and values as their replacements. @@ -317,11 +326,13 @@ for (var [placeholder, parameter] of Object.entries(parameters)) { var replacement; if (parameter.type === 'user') { - replacement = '@' + parameter.name; + replacement = '@' + this.escapeHTML(parameter.name); } else if (parameter.type === 'file') { - replacement = parameter.path || parameter.name; + replacement = this.escapeHTML(parameter.path) || this.escapeHTML(parameter.name); + } else if (parameter.type === 'highlight') { + replacement = '<a href="' + encodeURI(parameter.link) + '">' + this.escapeHTML(parameter.name) + '</a>'; } else { - replacement = parameter.name; + replacement = this.escapeHTML(parameter.name); } message = message.replace('{' + placeholder + '}', replacement); } @@ -340,6 +351,9 @@ } var message = setupCheck.description; + if (message) { + message = this.escapeHTML(message) + } if (setupCheck.descriptionParameters) { message = this.richToParsed(message, setupCheck.descriptionParameters); } |