dompurify 2.3.1 → 2.3.2
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 +2 -2
- package/dist/purify.cjs.js +25 -8
- package/dist/purify.cjs.js.map +1 -1
- package/dist/purify.es.js +25 -8
- package/dist/purify.es.js.map +1 -1
- package/dist/purify.js +25 -8
- 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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG.
|
|
8
8
|
|
|
9
|
-
It's also very simple to use and get started with. DOMPurify was [started in February 2014](https://github.com/cure53/DOMPurify/commit/a630922616927373485e0e787ab19e73e3691b2b) and, meanwhile, has reached version 2.3.
|
|
9
|
+
It's also very simple to use and get started with. DOMPurify was [started in February 2014](https://github.com/cure53/DOMPurify/commit/a630922616927373485e0e787ab19e73e3691b2b) and, meanwhile, has reached version 2.3.2.
|
|
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
|
|
|
@@ -337,7 +337,7 @@ Feature releases will not be announced to this list.
|
|
|
337
337
|
|
|
338
338
|
Many people helped and help DOMPurify become what it is and need to be acknowledged here!
|
|
339
339
|
|
|
340
|
-
[granlem 💸](https://twitter.com/MaximeVeit), [oreoshake 💸](https://github.com/oreoshake), [dcramer 💸](https://github.com/dcramer),[tdeekens ❤️](https://github.com/tdeekens), [peernohell ❤️](https://github.com/peernohell), [NateScarlet](https://github.com/NateScarlet), [neilj](https://github.com/neilj), [fhemberger](https://github.com/fhemberger), [Joris-van-der-Wel](https://github.com/Joris-van-der-Wel), [ydaniv](https://github.com/ydaniv), [terjanq](https://twitter.com/terjanq), [filedescriptor](https://github.com/filedescriptor), [ConradIrwin](https://github.com/ConradIrwin), [gibson042](https://github.com/gibson042), [choumx](https://github.com/choumx), [0xSobky](https://github.com/0xSobky), [styfle](https://github.com/styfle), [koto](https://github.com/koto), [tlau88](https://github.com/tlau88), [strugee](https://github.com/strugee), [oparoz](https://github.com/oparoz), [mathiasbynens](https://github.com/mathiasbynens), [edg2s](https://github.com/edg2s), [dnkolegov](https://github.com/dnkolegov), [dhardtke](https://github.com/dhardtke), [wirehead](https://github.com/wirehead), [thorn0](https://github.com/thorn0), [styu](https://github.com/styu), [mozfreddyb](https://github.com/mozfreddyb), [mikesamuel](https://github.com/mikesamuel), [jorangreef](https://github.com/jorangreef), [jimmyhchan](https://github.com/jimmyhchan), [jameydeorio](https://github.com/jameydeorio), [jameskraus](https://github.com/jameskraus), [hyderali](https://github.com/hyderali), [hansottowirtz](https://github.com/hansottowirtz), [hackvertor](https://github.com/hackvertor), [freddyb](https://github.com/freddyb), [flavorjones](https://github.com/flavorjones), [djfarrelly](https://github.com/djfarrelly), [devd](https://github.com/devd), [camerondunford](https://github.com/camerondunford), [buu700](https://github.com/buu700), [buildog](https://github.com/buildog), [alabiaga](https://github.com/alabiaga), [Vector919](https://github.com/Vector919), [Robbert](https://github.com/Robbert), [GreLI](https://github.com/GreLI), [FuzzySockets](https://github.com/FuzzySockets), [ArtemBernatskyy](https://github.com/ArtemBernatskyy), [@garethheyes](https://twitter.com/garethheyes), [@shafigullin](https://twitter.com/shafigullin), [@mmrupp](https://twitter.com/mmrupp), [@irsdl](https://twitter.com/irsdl),[ShikariSenpai](https://github.com/ShikariSenpai), [ansjdnakjdnajkd](https://github.com/ansjdnakjdnajkd), [@asutherland](https://twitter.com/asutherland), [@mathias](https://twitter.com/mathias), [@cgvwzq](https://twitter.com/cgvwzq), [@robbertatwork](https://twitter.com/robbertatwork), [@giutro](https://twitter.com/giutro), [@CmdEngineer_](https://twitter.com/CmdEngineer_), [@avr4mit](https://twitter.com/avr4mit) and especially [@securitymb ❤️](https://twitter.com/securitymb) & [@masatokinugawa ❤️](https://twitter.com/masatokinugawa)
|
|
340
|
+
[lowdefy 💸](https://twitter.com/lowdefy), [granlem 💸](https://twitter.com/MaximeVeit), [oreoshake 💸](https://github.com/oreoshake), [dcramer 💸](https://github.com/dcramer),[tdeekens ❤️](https://github.com/tdeekens), [peernohell ❤️](https://github.com/peernohell), [NateScarlet](https://github.com/NateScarlet), [neilj](https://github.com/neilj), [fhemberger](https://github.com/fhemberger), [Joris-van-der-Wel](https://github.com/Joris-van-der-Wel), [ydaniv](https://github.com/ydaniv), [terjanq](https://twitter.com/terjanq), [filedescriptor](https://github.com/filedescriptor), [ConradIrwin](https://github.com/ConradIrwin), [gibson042](https://github.com/gibson042), [choumx](https://github.com/choumx), [0xSobky](https://github.com/0xSobky), [styfle](https://github.com/styfle), [koto](https://github.com/koto), [tlau88](https://github.com/tlau88), [strugee](https://github.com/strugee), [oparoz](https://github.com/oparoz), [mathiasbynens](https://github.com/mathiasbynens), [edg2s](https://github.com/edg2s), [dnkolegov](https://github.com/dnkolegov), [dhardtke](https://github.com/dhardtke), [wirehead](https://github.com/wirehead), [thorn0](https://github.com/thorn0), [styu](https://github.com/styu), [mozfreddyb](https://github.com/mozfreddyb), [mikesamuel](https://github.com/mikesamuel), [jorangreef](https://github.com/jorangreef), [jimmyhchan](https://github.com/jimmyhchan), [jameydeorio](https://github.com/jameydeorio), [jameskraus](https://github.com/jameskraus), [hyderali](https://github.com/hyderali), [hansottowirtz](https://github.com/hansottowirtz), [hackvertor](https://github.com/hackvertor), [freddyb](https://github.com/freddyb), [flavorjones](https://github.com/flavorjones), [djfarrelly](https://github.com/djfarrelly), [devd](https://github.com/devd), [camerondunford](https://github.com/camerondunford), [buu700](https://github.com/buu700), [buildog](https://github.com/buildog), [alabiaga](https://github.com/alabiaga), [Vector919](https://github.com/Vector919), [Robbert](https://github.com/Robbert), [GreLI](https://github.com/GreLI), [FuzzySockets](https://github.com/FuzzySockets), [ArtemBernatskyy](https://github.com/ArtemBernatskyy), [@garethheyes](https://twitter.com/garethheyes), [@shafigullin](https://twitter.com/shafigullin), [@mmrupp](https://twitter.com/mmrupp), [@irsdl](https://twitter.com/irsdl),[ShikariSenpai](https://github.com/ShikariSenpai), [ansjdnakjdnajkd](https://github.com/ansjdnakjdnajkd), [@asutherland](https://twitter.com/asutherland), [@mathias](https://twitter.com/mathias), [@cgvwzq](https://twitter.com/cgvwzq), [@robbertatwork](https://twitter.com/robbertatwork), [@giutro](https://twitter.com/giutro), [@CmdEngineer_](https://twitter.com/CmdEngineer_), [@avr4mit](https://twitter.com/avr4mit) and especially [@securitymb ❤️](https://twitter.com/securitymb) & [@masatokinugawa ❤️](https://twitter.com/masatokinugawa)
|
|
341
341
|
|
|
342
342
|
## Testing powered by
|
|
343
343
|
<a target="_blank" href="https://www.browserstack.com/"><img width="200" src="https://www.browserstack.com/images/layout/browserstack-logo-600x315.png"></a><br>
|
package/dist/purify.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @license DOMPurify 2.3.
|
|
1
|
+
/*! @license DOMPurify 2.3.2 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.2/LICENSE */
|
|
2
2
|
|
|
3
3
|
'use strict';
|
|
4
4
|
|
|
@@ -245,7 +245,7 @@ function createDOMPurify() {
|
|
|
245
245
|
* Version label, exposed for easier checks
|
|
246
246
|
* if DOMPurify is up to date or not
|
|
247
247
|
*/
|
|
248
|
-
DOMPurify.version = '2.3.
|
|
248
|
+
DOMPurify.version = '2.3.2';
|
|
249
249
|
|
|
250
250
|
/**
|
|
251
251
|
* Array of elements that DOMPurify removed during sanitation.
|
|
@@ -429,6 +429,12 @@ function createDOMPurify() {
|
|
|
429
429
|
var NAMESPACE = HTML_NAMESPACE;
|
|
430
430
|
var IS_EMPTY_INPUT = false;
|
|
431
431
|
|
|
432
|
+
/* Parsing of strict XHTML documents */
|
|
433
|
+
var PARSER_MEDIA_TYPE = void 0;
|
|
434
|
+
var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];
|
|
435
|
+
var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';
|
|
436
|
+
var transformCaseFunc = void 0;
|
|
437
|
+
|
|
432
438
|
/* Keep a reference to config to pass to hooks */
|
|
433
439
|
var CONFIG = null;
|
|
434
440
|
|
|
@@ -480,6 +486,12 @@ function createDOMPurify() {
|
|
|
480
486
|
IN_PLACE = cfg.IN_PLACE || false; // Default false
|
|
481
487
|
IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;
|
|
482
488
|
NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
|
|
489
|
+
PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE in SUPPORTED_PARSER_MEDIA_TYPES ? cfg.PARSER_MEDIA_TYPE : DEFAULT_PARSER_MEDIA_TYPE;
|
|
490
|
+
// HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.
|
|
491
|
+
transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {
|
|
492
|
+
return x;
|
|
493
|
+
} : stringToLowerCase;
|
|
494
|
+
|
|
483
495
|
if (SAFE_FOR_TEMPLATES) {
|
|
484
496
|
ALLOW_DATA_ATTR = false;
|
|
485
497
|
}
|
|
@@ -748,6 +760,11 @@ function createDOMPurify() {
|
|
|
748
760
|
leadingWhitespace = matches && matches[0];
|
|
749
761
|
}
|
|
750
762
|
|
|
763
|
+
if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {
|
|
764
|
+
// Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)
|
|
765
|
+
dirty = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + dirty + '</body></html>';
|
|
766
|
+
}
|
|
767
|
+
|
|
751
768
|
var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
|
|
752
769
|
/*
|
|
753
770
|
* Use the DOMParser API by default, fallback later if needs be
|
|
@@ -755,7 +772,7 @@ function createDOMPurify() {
|
|
|
755
772
|
*/
|
|
756
773
|
if (NAMESPACE === HTML_NAMESPACE) {
|
|
757
774
|
try {
|
|
758
|
-
doc = new DOMParser().parseFromString(dirtyPayload,
|
|
775
|
+
doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
|
|
759
776
|
} catch (_) {}
|
|
760
777
|
}
|
|
761
778
|
|
|
@@ -868,7 +885,7 @@ function createDOMPurify() {
|
|
|
868
885
|
}
|
|
869
886
|
|
|
870
887
|
/* Now let's check the element's type and name */
|
|
871
|
-
var tagName =
|
|
888
|
+
var tagName = transformCaseFunc(currentNode.nodeName);
|
|
872
889
|
|
|
873
890
|
/* Execute a hook if present */
|
|
874
891
|
_executeHook('uponSanitizeElement', currentNode, {
|
|
@@ -1009,7 +1026,7 @@ function createDOMPurify() {
|
|
|
1009
1026
|
namespaceURI = _attr.namespaceURI;
|
|
1010
1027
|
|
|
1011
1028
|
value = stringTrim(attr.value);
|
|
1012
|
-
lcName =
|
|
1029
|
+
lcName = transformCaseFunc(name);
|
|
1013
1030
|
|
|
1014
1031
|
/* Execute a hook if present */
|
|
1015
1032
|
hookEvent.attrName = lcName;
|
|
@@ -1044,7 +1061,7 @@ function createDOMPurify() {
|
|
|
1044
1061
|
}
|
|
1045
1062
|
|
|
1046
1063
|
/* Is `value` valid for this attribute? */
|
|
1047
|
-
var lcTag = currentNode.nodeName
|
|
1064
|
+
var lcTag = transformCaseFunc(currentNode.nodeName);
|
|
1048
1065
|
if (!_isValidAttribute(lcTag, lcName, value)) {
|
|
1049
1066
|
continue;
|
|
1050
1067
|
}
|
|
@@ -1307,8 +1324,8 @@ function createDOMPurify() {
|
|
|
1307
1324
|
_parseConfig({});
|
|
1308
1325
|
}
|
|
1309
1326
|
|
|
1310
|
-
var lcTag =
|
|
1311
|
-
var lcName =
|
|
1327
|
+
var lcTag = transformCaseFunc(tag);
|
|
1328
|
+
var lcName = transformCaseFunc(attr);
|
|
1312
1329
|
return _isValidAttribute(lcTag, lcName, value);
|
|
1313
1330
|
};
|
|
1314
1331
|
|