dompurify 2.4.5 → 2.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/purify.cjs.js +22 -15
- package/dist/purify.cjs.js.map +1 -1
- package/dist/purify.es.js +22 -15
- package/dist/purify.es.js.map +1 -1
- package/dist/purify.js +22 -15
- package/dist/purify.js.map +1 -1
- package/dist/purify.min.js +2 -2
- package/dist/purify.min.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ It's also very simple to use and get started with. DOMPurify was [started in Feb
|
|
|
10
10
|
|
|
11
11
|
DOMPurify is written in JavaScript and works in all modern browsers (Safari (10+), Opera (15+), Internet Explorer (10+), Edge, Firefox and Chrome - as well as almost anything else using Blink or WebKit). It doesn't break on MSIE6 or other legacy browsers. It either uses [a fall-back](#what-about-older-browsers-like-msie8) or simply does nothing.
|
|
12
12
|
|
|
13
|
-
**Note that DOMPurify v2.4.
|
|
13
|
+
**Note that DOMPurify v2.4.6 is the latest version supporting MSIE. For important security updates compatible with MSIE, please use the 2.x branch.**
|
|
14
14
|
|
|
15
15
|
Our automated tests cover [19 different browsers](https://github.com/cure53/DOMPurify/blob/main/test/karma.custom-launchers.config.js#L5) right now, more to come. We also cover Node.js v14.x, v16.x, v17.x and v18.x, running DOMPurify on [jsdom](https://github.com/jsdom/jsdom). Older Node versions are known to work as well, but hey... no guarantees.
|
|
16
16
|
|
package/dist/purify.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @license DOMPurify 2.4.
|
|
1
|
+
/*! @license DOMPurify 2.4.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.6/LICENSE */
|
|
2
2
|
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
@@ -153,7 +153,9 @@ function unconstruct(func) {
|
|
|
153
153
|
/* Add properties to a lookup table */
|
|
154
154
|
|
|
155
155
|
function addToSet(set, array, transformCaseFunc) {
|
|
156
|
-
|
|
156
|
+
var _transformCaseFunc;
|
|
157
|
+
|
|
158
|
+
transformCaseFunc = (_transformCaseFunc = transformCaseFunc) !== null && _transformCaseFunc !== void 0 ? _transformCaseFunc : stringToLowerCase;
|
|
157
159
|
|
|
158
160
|
if (setPrototypeOf) {
|
|
159
161
|
// Make 'in' and truthy checks like Boolean(set.constructor)
|
|
@@ -324,7 +326,7 @@ function createDOMPurify() {
|
|
|
324
326
|
*/
|
|
325
327
|
|
|
326
328
|
|
|
327
|
-
DOMPurify.version = '2.4.
|
|
329
|
+
DOMPurify.version = '2.4.6';
|
|
328
330
|
/**
|
|
329
331
|
* Array of elements that DOMPurify removed during sanitation.
|
|
330
332
|
* Empty if nothing was removed.
|
|
@@ -390,7 +392,7 @@ function createDOMPurify() {
|
|
|
390
392
|
* Expose whether this browser supports running the full DOMPurify.
|
|
391
393
|
*/
|
|
392
394
|
|
|
393
|
-
DOMPurify.isSupported = typeof getParentNode === 'function' && implementation &&
|
|
395
|
+
DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined && documentMode !== 9;
|
|
394
396
|
var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,
|
|
395
397
|
ERB_EXPR$1 = ERB_EXPR,
|
|
396
398
|
TMPLIT_EXPR$1 = TMPLIT_EXPR,
|
|
@@ -1124,8 +1126,10 @@ function createDOMPurify() {
|
|
|
1124
1126
|
|
|
1125
1127
|
return true;
|
|
1126
1128
|
}
|
|
1129
|
+
/* Make sure that older browsers don't get fallback-tag mXSS */
|
|
1130
|
+
|
|
1127
1131
|
|
|
1128
|
-
if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\/no(script|embed)/i, currentNode.innerHTML)) {
|
|
1132
|
+
if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
|
|
1129
1133
|
_forceRemove(currentNode);
|
|
1130
1134
|
|
|
1131
1135
|
return true;
|
|
@@ -1187,9 +1191,9 @@ function createDOMPurify() {
|
|
|
1187
1191
|
}
|
|
1188
1192
|
/* Check value is safe. First, is attr inert? If so, is safe */
|
|
1189
1193
|
|
|
1190
|
-
} else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (
|
|
1194
|
+
} else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (value) {
|
|
1191
1195
|
return false;
|
|
1192
|
-
}
|
|
1196
|
+
} else ;
|
|
1193
1197
|
|
|
1194
1198
|
return true;
|
|
1195
1199
|
};
|
|
@@ -1316,12 +1320,16 @@ function createDOMPurify() {
|
|
|
1316
1320
|
if (namespaceURI) ; else {
|
|
1317
1321
|
switch (trustedTypes.getAttributeType(lcTag, lcName)) {
|
|
1318
1322
|
case 'TrustedHTML':
|
|
1319
|
-
|
|
1320
|
-
|
|
1323
|
+
{
|
|
1324
|
+
value = trustedTypesPolicy.createHTML(value);
|
|
1325
|
+
break;
|
|
1326
|
+
}
|
|
1321
1327
|
|
|
1322
1328
|
case 'TrustedScriptURL':
|
|
1323
|
-
|
|
1324
|
-
|
|
1329
|
+
{
|
|
1330
|
+
value = trustedTypesPolicy.createScriptURL(value);
|
|
1331
|
+
break;
|
|
1332
|
+
}
|
|
1325
1333
|
}
|
|
1326
1334
|
}
|
|
1327
1335
|
}
|
|
@@ -1415,15 +1423,14 @@ function createDOMPurify() {
|
|
|
1415
1423
|
|
|
1416
1424
|
|
|
1417
1425
|
if (typeof dirty !== 'string' && !_isNode(dirty)) {
|
|
1418
|
-
|
|
1419
|
-
if (typeof dirty.toString !== 'function') {
|
|
1420
|
-
throw typeErrorCreate('toString is not a function');
|
|
1421
|
-
} else {
|
|
1426
|
+
if (typeof dirty.toString === 'function') {
|
|
1422
1427
|
dirty = dirty.toString();
|
|
1423
1428
|
|
|
1424
1429
|
if (typeof dirty !== 'string') {
|
|
1425
1430
|
throw typeErrorCreate('dirty is not a string, aborting');
|
|
1426
1431
|
}
|
|
1432
|
+
} else {
|
|
1433
|
+
throw typeErrorCreate('toString is not a function');
|
|
1427
1434
|
}
|
|
1428
1435
|
}
|
|
1429
1436
|
/* Check we can run. Otherwise fall back or ignore */
|