Merge pull request #955 from barrycarey/issue-929-html-char-parsing

Ability to decode HTML Entities when all tags are stripped. Fixes #929
This commit is contained in:
advplyr 2022-08-31 15:08:19 -05:00 committed by GitHub
commit 8cd7de25ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2249 additions and 3 deletions

2235
server/utils/htmlEntities.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
const sanitizeHtml = require('../libs/sanitizeHtml')
const {entities} = require("./htmlEntities");
function sanitize(html) {
const sanitizerOptions = {
@ -17,12 +18,22 @@ function sanitize(html) {
}
module.exports.sanitize = sanitize
function stripAllTags(html) {
function stripAllTags(html, shouldDecodeEntities = true) {
const sanitizerOptions = {
allowedTags: [],
disallowedTagsMode: 'discard'
}
return sanitizeHtml(html, sanitizerOptions)
let sanitized = sanitizeHtml(html, sanitizerOptions)
return shouldDecodeEntities ? decodeHTMLEntities(sanitized) : sanitized
}
module.exports.stripAllTags = stripAllTags
function decodeHTMLEntities(strToDecode) {
return strToDecode.replace(/\&([^;]+);?/g, function (entity) {
if (entity in entities) {
return entities[entity]
}
return entity;
})
}
module.exports.stripAllTags = stripAllTags