dompurify 3.4.14 → 3.4.16
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 +26 -6
- package/dist/purify.cjs.d.ts +398 -405
- package/dist/purify.cjs.js +2381 -2581
- package/dist/purify.cjs.js.map +1 -1
- package/dist/purify.es.d.mts +399 -404
- package/dist/purify.es.mjs +2380 -2579
- package/dist/purify.es.mjs.map +1 -1
- package/dist/purify.js +2467 -2670
- package/dist/purify.js.map +1 -1
- package/dist/purify.min.js +7 -3
- package/dist/purify.min.js.map +1 -1
- package/package.json +19 -24
- package/src/purify.ts +146 -17
package/dist/purify.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purify.min.js","sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"sourcesContent":[null,null,null,null,null],"names":["entries","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","prototype","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","Symbol","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","TypeError","_len4","_key4","lastIndex","_len3","_key3","addToSet","set","array","transformCaseFunc","l","element","lcElement","cleanArray","index","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","value","constructor","lookupGetter","prop","desc","get","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","NODE_TYPE","LITERAL_TEXT_ELEMENT_NAMES","LITERAL_TEXT_ELEMENTS","LITERAL_TEXT_CLOSE","map","name","getGlobal","window","_resolveSetOption","cfg","key","fallback","options","base","transform","_resolveObjectOption","makeFallback","undefined","purify","createDOMPurify","DOMPurify","root","version","VERSION","removed","document","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","getOwnerDocument","_readNodeType","node","_readNodeName","nodeName","template","createElement","content","ownerDocument","trustedTypesPolicy","defaultTrustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","createHTML","_getDefaultTrustedTypesPolicy","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createScriptURL","scriptUrl","_","console","warn","_createTrustedTypesPolicy","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","_unused","isRegex","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","previousTrustedTypesPolicy","error","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","namespaceURI","parentTagName","_checkSvgNamespace","_checkMathMlNamespace","_checkHtmlNamespace","_forceRemove","removeChild","_stripAttributeNode","attribute","removeAttributeNode","removeAttribute","_neutralizeRoot","_neutralizeSubtree","childNodes","snapshot","child","attributes","i","_removeAttribute","attr","getAttributeNode","from","setAttribute","_stripDisallowedAttributes","stack","_isPatchLinkageAttribute","lcName","lcTag","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_stripTemplateExpressions","_scrubTemplateExpressions","_node$querySelectorAl","normalize","walker","currentNode","nextNode","data","templates","querySelectorAll","tmpl","_isDocumentFragment","_isClobbered","realTagName","textContent","hasChildNodes","_isNode","_executeHooks","hook","_matchesNameCheck","check","_forkSharedAllowlist","hookList","defaultSet","setConfigSet","_handleHookDetachedNode","_sanitizeElements","allowedTags","firstElementChild","_isUnsafeNode","_isBasicCustomElement","parentNode","hoisted","_sanitizeDisallowedNode","_isValidAttribute","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_applyTrustedTypesToAttribute","getAttributeType","_createTrustedScriptURL","_setAttributeValue","setAttributeNS","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","initValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","innerSr","_sanitizeAttachedShadowRoots","shadow","item","isElement","rootName","sr","sanitize","importedNode","returnNode","valueAsRecord","valueToString","stringified","stringifyValue","inPlace","_neutralizePatchLinkage","nn","appendChild","firstChild","walkRoot","nodeIterator","entry","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks"],"mappings":"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AEjCA,GACiB,iBAAVA,GACPA,EAAMC,cAAgBzF,OAEtBmF,EAAUI,GAAYN,EAAMO,GAE5BL,EAAUI,GAAYC,EAG5B,CAEA,OAAOL,CACT,CAmEA,SAASO,EACPR,EACAS,GAEA,KAAkB,OAAXT,GAAiB,CACtB,MAAMU,EAAOxF,EAAyB8E,EAAQS,GAE9C,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOpE,EAAQmE,EAAKC,KAGtB,GAA0B,mBAAfD,EAAKJ,MACd,OAAO/D,EAAQmE,EAAKJ,MAExB,CAEAN,EAAS/E,EAAe+E,EAC1B,CAMA,OAJA,WACE,OAAO,IACT,CAGF,CC1RO,MAAMY,EAAOzF,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGW0F,EAAM1F,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGW2F,EAAa3F,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOW4F,EAAgB5F,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGW6F,EAAS7F,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKW8F,EAAmB9F,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGW+F,EAAO/F,EAAO,CAAC,UC1RfyF,EAAOzF,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,UAGW0F,EAAM1F,EAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,oBACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,iBACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,mBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,gBACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGW6F,EAAS7F,EAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA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"}
|
|
1
|
+
{"version":3,"file":"purify.min.js","names":["entries","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","prototype","forEach","arrayIndexOf","indexOf","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","push","arraySlice","slice","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","toString","stringMatch","match","stringReplace","replace","stringIndexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","Symbol","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","unconstruct","TypeError","lastIndex","_len3","_key3","_len4","_key4","addToSet","set","array","transformCaseFunc","undefined","l","element","lcElement","cleanArray","index","isPropertyExist","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","value","constructor","stringifyValue","valueAsRecord","valueToString","lookupGetter","stringified","prop","desc","get","fallbackValue","isRegex","_unused","freeze","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","freeze","html","svg","mathMl","xml","seal","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","TAGS","ATTRS","EXPRESSIONS","addToSet","clone","entries","freeze","seal","arrayForEach","arrayIsArray","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","stringMatch","stringReplace","stringToLowerCase","stringToString","stringIndexOf","stringTrim","regExpTest","isRegex","typeErrorCreate","lookupGetter","create","objectHasOwnProperty","stringifyValue","NODE_TYPE","element","attribute","text","cdataSection","entityReference","entityNode","processingInstruction","comment","document","documentType","documentFragment","notation","LITERAL_TEXT_ELEMENT_NAMES","LITERAL_TEXT_ELEMENTS","LITERAL_TEXT_CLOSE","map","name","RegExp","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createHTML","html","createScriptURL","scriptUrl","_","console","warn","_createHooksMap","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","_resolveSetOption","cfg","key","fallback","options","base","transform","_resolveObjectOption","makeFallback","value","undefined","createDOMPurify","arguments","length","DOMPurify","root","version","VERSION","removed","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","prototype","cloneNode","remove","removeAttributeNode","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","getOwnerDocument","_readNodeType","node","_readNodeName","nodeName","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicy","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","_createTrustedScriptURL","_getDefaultTrustedTypesPolicy","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","createHTMLDocument","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","CUSTOM_ELEMENT","IS_ALLOWED_URI","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","svg","svgFilters","mathMl","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","xml","CUSTOM_ELEMENT_HANDLING","Object","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","transformCaseFunc","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","indexOf","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","previousTrustedTypesPolicy","error","ALL_SVG_TAGS","svgDisallowed","ALL_MATHML_TAGS","mathMlDisallowed","_checkSvgNamespace","tagName","parent","parentTagName","namespaceURI","Boolean","_checkMathMlNamespace","_checkHtmlNamespace","_checkValidNamespace","_forceRemove","removeChild","_stripAttributeNode","removeAttribute","_neutralizeRoot","_neutralizeSubtree","childNodes","snapshot","child","attributes","i","_removeAttribute","attr","getAttributeNode","from","setAttribute","_stripDisallowedAttributes","stack","pop","push","_isPatchLinkageAttribute","lcName","lcTag","_neutralizePatchLinkage","COMMENT_MARKUP_PROBE","data","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","call","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_stripTemplateExpressions","_scrubTemplateExpressions","_node$querySelectorAl","normalize","walker","currentNode","nextNode","templates","querySelectorAll","tmpl","_isDocumentFragment","_isClobbered","realTagName","textContent","hasChildNodes","_isNode","_executeHooks","hook","_isUnsafeNode","firstElementChild","ELEMENT_MARKUP_PROBE","_matchesNameCheck","check","_len","args","Array","_key","_sanitizeDisallowedNode","_isBasicCustomElement","parentNode","childCount","hoisted","_forkSharedAllowlist","hookList","set","defaultSet","setConfigSet","_handleHookDetachedNode","_sanitizeElements","allowedTags","nt","FALLBACK_TAG_CLOSE","_isValidAttribute","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_applyTrustedTypesToAttribute","getAttributeType","_setAttributeValue","setAttributeNS","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","l","initValue","recreatedNamedProp","SELF_CLOSING_TAG","cleanWrite","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","innerSr","_sanitizeAttachedShadowRoots","shadow","item","isElement","rootName","sr","sanitize","importedNode","returnNode","inPlace","nn","appendChild","firstChild","walkRoot","nodeIterator","entry","rootWasRemoved","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","DOCTYPE_NAME","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","index","removeHooks","removeAllHooks"],"sources":["../src/utils.ts","../src/tags.ts","../src/attrs.ts","../src/regexp.ts","../src/purify.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,26 +7,26 @@
|
|
|
7
7
|
"format:js": "prettier --write '{src,demos,scripts,test,website}/*.{js,ts}'",
|
|
8
8
|
"commit-amend-build": "scripts/commit-amend-build.sh",
|
|
9
9
|
"prebuild": "rimraf dist",
|
|
10
|
-
"dev": "cross-env NODE_ENV=development
|
|
11
|
-
"build": "npm run build:types && npm run build:
|
|
10
|
+
"dev": "cross-env NODE_ENV=development DOMPURIFY_BUILD_TARGET=umd rolldown -w -c config/rolldown.config.js",
|
|
11
|
+
"build": "npm run build:types && npm run build:rolldown && npm run build:fix-types && npm run build:cleanup",
|
|
12
12
|
"build:types": "tsc -p config/tsconfig.json --outDir dist/types --declaration --emitDeclarationOnly",
|
|
13
|
-
"build:
|
|
13
|
+
"build:rolldown": "rolldown -c config/rolldown.config.js",
|
|
14
14
|
"build:fix-types": "node ./scripts/fix-types.js",
|
|
15
|
-
"build:umd": "
|
|
16
|
-
"build:umd:min": "
|
|
17
|
-
"build:es": "
|
|
18
|
-
"build:cjs": "
|
|
19
|
-
"build:cov": "
|
|
15
|
+
"build:umd": "cross-env DOMPURIFY_BUILD_TARGET=umd rolldown -c config/rolldown.config.js",
|
|
16
|
+
"build:umd:min": "cross-env DOMPURIFY_BUILD_TARGET=umd-min rolldown -c config/rolldown.config.js",
|
|
17
|
+
"build:es": "cross-env DOMPURIFY_BUILD_TARGET=es rolldown -c config/rolldown.config.js",
|
|
18
|
+
"build:cjs": "cross-env DOMPURIFY_BUILD_TARGET=cjs rolldown -c config/rolldown.config.js",
|
|
19
|
+
"build:cov": "rolldown -c config/rolldown.coverage.config.js",
|
|
20
20
|
"build:cleanup": "rimraf dist/types",
|
|
21
21
|
"bench": "node scripts/benchmark.js",
|
|
22
|
-
"test": "cross-env NODE_ENV=test
|
|
23
|
-
"test:jsdom": "cross-env NODE_ENV=test
|
|
24
|
-
"test:happydom": "cross-env NODE_ENV=test
|
|
22
|
+
"test": "cross-env NODE_ENV=test npm run lint && npm run test:jsdom && npm run test:browser -- --project=chromium",
|
|
23
|
+
"test:jsdom": "cross-env NODE_ENV=test node test/jsdom-node-runner --dot",
|
|
24
|
+
"test:happydom": "cross-env NODE_ENV=test node test/happydom-node-runner --dot",
|
|
25
25
|
"test:browser": "playwright test --config config/playwright.config.js",
|
|
26
26
|
"test:browser:install": "playwright install",
|
|
27
27
|
"test:browser:legacy": "node test/browser/legacy-runner.js",
|
|
28
|
-
"test:ci": "cross-env NODE_ENV=test
|
|
29
|
-
"test:fuzz": "cross-env NODE_ENV=test
|
|
28
|
+
"test:ci": "cross-env NODE_ENV=test npm run test:jsdom && npm run test:browser",
|
|
29
|
+
"test:fuzz": "cross-env NODE_ENV=test node test/fuzz/sanitize.fast-check.js",
|
|
30
30
|
"coverage": "rimraf .nyc_output coverage dist/purify.cov.cjs.js && npm run build:cov && cross-env NODE_ENV=test DOMPURIFY_COV=1 node test/jsdom-node-runner --dot && nyc report --reporter=html --reporter=text --report-dir=coverage",
|
|
31
31
|
"verify-typescript": "node ./typescript/verify.js"
|
|
32
32
|
},
|
|
@@ -123,18 +123,14 @@
|
|
|
123
123
|
"@babel/preset-typescript": "^7.29.7",
|
|
124
124
|
"@playwright/test": "^1.61.0",
|
|
125
125
|
"@rollup/plugin-babel": "^7.1.0",
|
|
126
|
-
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
127
|
-
"@rollup/plugin-replace": "^6.0.1",
|
|
128
|
-
"@rollup/plugin-terser": "^1.0.0",
|
|
129
|
-
"@rollup/plugin-typescript": "^12.3.0",
|
|
130
126
|
"@types/estree": "^1.0.9",
|
|
131
|
-
"@types/node": "^26.
|
|
127
|
+
"@types/node": "^26.6.1",
|
|
132
128
|
"babel-plugin-istanbul": "^8.0.0",
|
|
133
129
|
"cross-env": "^10.1.0",
|
|
134
130
|
"eslint-config-prettier": "^10.1.8",
|
|
135
131
|
"eslint-plugin-prettier": "^5.5.6",
|
|
136
|
-
"fast-check": "^4.
|
|
137
|
-
"happy-dom": "^20.
|
|
132
|
+
"fast-check": "^4.10.1",
|
|
133
|
+
"happy-dom": "^20.14.5",
|
|
138
134
|
"husky": "^9.1.0",
|
|
139
135
|
"jquery": "^3.6.0",
|
|
140
136
|
"jsdom": "^29.1.1",
|
|
@@ -143,9 +139,8 @@
|
|
|
143
139
|
"qunit": "^2.26.0",
|
|
144
140
|
"qunit-tap": "^1.5.0",
|
|
145
141
|
"rimraf": "^6.0.1",
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
-
"tslib": "^2.7.0",
|
|
142
|
+
"rolldown": "^1.2.9",
|
|
143
|
+
"rolldown-plugin-dts": "^0.28.6",
|
|
149
144
|
"typescript": "^5.6.3",
|
|
150
145
|
"xo": "^0.60.0"
|
|
151
146
|
},
|
|
@@ -154,7 +149,7 @@
|
|
|
154
149
|
},
|
|
155
150
|
"name": "dompurify",
|
|
156
151
|
"description": "DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It runs as JavaScript and works in all modern browsers, as well as in Node.js (via jsdom). DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not.",
|
|
157
|
-
"version": "3.4.
|
|
152
|
+
"version": "3.4.16",
|
|
158
153
|
"directories": {
|
|
159
154
|
"test": "test"
|
|
160
155
|
},
|
package/src/purify.ts
CHANGED
|
@@ -268,6 +268,15 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
268
268
|
|
|
269
269
|
const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');
|
|
270
270
|
const remove = lookupGetter(ElementPrototype, 'remove');
|
|
271
|
+
// Clobber-safe Attr-node removal. On an HTMLFormElement a descendant named
|
|
272
|
+
// "removeAttributeNode" shadows the prototype method via
|
|
273
|
+
// [LegacyOverrideBuiltIns], so element.removeAttributeNode(attr) throws.
|
|
274
|
+
// Calling the cached Element.prototype method with the element as the
|
|
275
|
+
// receiver removes the exact live Attr node regardless of the shadowing.
|
|
276
|
+
const removeAttributeNode = lookupGetter(
|
|
277
|
+
ElementPrototype,
|
|
278
|
+
'removeAttributeNode'
|
|
279
|
+
);
|
|
271
280
|
const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');
|
|
272
281
|
const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');
|
|
273
282
|
const getParentNode = lookupGetter(ElementPrototype, 'parentNode');
|
|
@@ -1253,7 +1262,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1253
1262
|
name: string
|
|
1254
1263
|
): void {
|
|
1255
1264
|
try {
|
|
1256
|
-
|
|
1265
|
+
removeAttributeNode(element, attribute);
|
|
1257
1266
|
} catch (_) {
|
|
1258
1267
|
try {
|
|
1259
1268
|
element.removeAttribute(name);
|
|
@@ -1351,13 +1360,18 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1351
1360
|
|
|
1352
1361
|
try {
|
|
1353
1362
|
if (attr) {
|
|
1354
|
-
|
|
1363
|
+
removeAttributeNode(element, attr);
|
|
1355
1364
|
} else {
|
|
1356
1365
|
element.removeAttribute(name);
|
|
1357
1366
|
}
|
|
1358
1367
|
} catch (_) {
|
|
1359
1368
|
/* Clobbered or already-detached node - best-effort fall back to a
|
|
1360
|
-
name-based removal so the "is" handling below still runs.
|
|
1369
|
+
name-based removal so the "is" handling below still runs. Note this
|
|
1370
|
+
fallback ASCII-lowercases its lookup key in an HTML document and so
|
|
1371
|
+
cannot reach a case-preserved attribute name; the cached
|
|
1372
|
+
removeAttributeNode() above is what removes those, and a clobbered
|
|
1373
|
+
form is already removed wholesale by _isClobbered() before reaching
|
|
1374
|
+
here. */
|
|
1361
1375
|
try {
|
|
1362
1376
|
element.removeAttribute(name);
|
|
1363
1377
|
} catch (_) {}
|
|
@@ -1772,6 +1786,17 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
1772
1786
|
// canonical NamedNodeMap.
|
|
1773
1787
|
element.attributes !== getAttributes(element) ||
|
|
1774
1788
|
typeof element.removeAttribute !== 'function' ||
|
|
1789
|
+
// A form descendant named "removeAttributeNode" or "getAttributeNode"
|
|
1790
|
+
// shadows these Attr-node methods via [LegacyOverrideBuiltIns].
|
|
1791
|
+
// _removeAttribute() / _stripAttributeNode() reach for
|
|
1792
|
+
// element.removeAttributeNode(attr) first; when it is shadowed the call
|
|
1793
|
+
// throws and the name-based fallback element.removeAttribute(name)
|
|
1794
|
+
// ASCII-lowercases its lookup key in an HTML document, silently missing
|
|
1795
|
+
// a case-preserved event-handler attribute (e.g. an ONANIMATIONSTART
|
|
1796
|
+
// that reached the sanitizer through an XML/XHTML parse). Flag the form
|
|
1797
|
+
// so it is removed wholesale, exactly as for the other shadowed methods.
|
|
1798
|
+
typeof element.removeAttributeNode !== 'function' ||
|
|
1799
|
+
typeof element.getAttributeNode !== 'function' ||
|
|
1775
1800
|
typeof element.setAttribute !== 'function' ||
|
|
1776
1801
|
typeof element.namespaceURI !== 'string' ||
|
|
1777
1802
|
typeof element.insertBefore !== 'function' ||
|
|
@@ -2181,6 +2206,14 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2181
2206
|
skipped; they are removal decisions, not the hook contract. */
|
|
2182
2207
|
if (removed === false) {
|
|
2183
2208
|
_executeHooks(hooks.afterSanitizeElements, currentNode, null);
|
|
2209
|
+
|
|
2210
|
+
/* The hook may have detached the kept custom element. Same
|
|
2211
|
+
IN_PLACE hazard as the before/upon sites: neutralize the
|
|
2212
|
+
detached subtree before the walker skips past it (see
|
|
2213
|
+
_handleHookDetachedNode). */
|
|
2214
|
+
if (_handleHookDetachedNode(currentNode, root)) {
|
|
2215
|
+
return true;
|
|
2216
|
+
}
|
|
2184
2217
|
}
|
|
2185
2218
|
|
|
2186
2219
|
return removed;
|
|
@@ -2223,7 +2256,14 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2223
2256
|
/* Execute a hook if present */
|
|
2224
2257
|
_executeHooks(hooks.afterSanitizeElements, currentNode, null);
|
|
2225
2258
|
|
|
2226
|
-
|
|
2259
|
+
/* The afterSanitizeElements hook is the documented place for
|
|
2260
|
+
node.remove() policies, and a detach here is invisible to every later
|
|
2261
|
+
pass: the iterator advances past the detached subtree, so its
|
|
2262
|
+
descendants are never visited, and hook-detached nodes are not in
|
|
2263
|
+
DOMPurify.removed, so the post-walk IN_PLACE pass does not reach them
|
|
2264
|
+
either. Apply the same detach-neutralization invariant as the
|
|
2265
|
+
before/upon sites: true (removed) if the hook detached the node. */
|
|
2266
|
+
return _handleHookDetachedNode(currentNode, root);
|
|
2227
2267
|
};
|
|
2228
2268
|
|
|
2229
2269
|
/**
|
|
@@ -2437,22 +2477,32 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2437
2477
|
/**
|
|
2438
2478
|
* Write a modified attribute value back onto the element. On
|
|
2439
2479
|
* success, re-probe for clobbering introduced by the new value and
|
|
2440
|
-
* remove the element when found; otherwise
|
|
2441
|
-
*
|
|
2442
|
-
*
|
|
2480
|
+
* remove the element when found; otherwise, when this writeback is the
|
|
2481
|
+
* recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the
|
|
2482
|
+
* removal entry that path recorded so it does not show as removed. On
|
|
2443
2483
|
* failure, remove the attribute instead.
|
|
2444
2484
|
*
|
|
2485
|
+
* Returns true only on a clean write (the value was set and the new value
|
|
2486
|
+
* introduced no clobbering). The caller uses that, together with its own
|
|
2487
|
+
* knowledge of whether this attribute pushed a DOMPurify.removed record, to
|
|
2488
|
+
* decide whether to pop that record. The pop must happen ONLY for the
|
|
2489
|
+
* named-prop remove-and-recreate; popping on any other value change (trim,
|
|
2490
|
+
* template scrubbing, Trusted Types) would consume an unrelated _forceRemove
|
|
2491
|
+
* subtree-cleanup record and let that detached subtree keep a live event
|
|
2492
|
+
* handler through the IN_PLACE neutralization pass (SO-001).
|
|
2493
|
+
*
|
|
2445
2494
|
* @param currentNode the element carrying the attribute
|
|
2446
2495
|
* @param name the attribute name as present on the element
|
|
2447
2496
|
* @param namespaceURI the attribute's namespace, if any
|
|
2448
2497
|
* @param value the new attribute value
|
|
2498
|
+
* @return true if the value was written without introducing clobbering
|
|
2449
2499
|
*/
|
|
2450
2500
|
const _setAttributeValue = function (
|
|
2451
2501
|
currentNode: Element,
|
|
2452
2502
|
name: string,
|
|
2453
2503
|
namespaceURI: string | null,
|
|
2454
2504
|
value: string
|
|
2455
|
-
):
|
|
2505
|
+
): boolean {
|
|
2456
2506
|
try {
|
|
2457
2507
|
if (namespaceURI) {
|
|
2458
2508
|
currentNode.setAttributeNS(namespaceURI, name, value);
|
|
@@ -2463,11 +2513,13 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2463
2513
|
|
|
2464
2514
|
if (_isClobbered(currentNode)) {
|
|
2465
2515
|
_forceRemove(currentNode);
|
|
2466
|
-
|
|
2467
|
-
arrayPop(DOMPurify.removed);
|
|
2516
|
+
return false;
|
|
2468
2517
|
}
|
|
2518
|
+
|
|
2519
|
+
return true;
|
|
2469
2520
|
} catch (_) {
|
|
2470
2521
|
_removeAttribute(name, currentNode);
|
|
2522
|
+
return false;
|
|
2471
2523
|
}
|
|
2472
2524
|
};
|
|
2473
2525
|
|
|
@@ -2480,11 +2532,24 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2480
2532
|
* @protect setAttribute
|
|
2481
2533
|
*
|
|
2482
2534
|
* @param currentNode to sanitize
|
|
2535
|
+
* @param root the current walk root
|
|
2483
2536
|
*/
|
|
2484
|
-
|
|
2537
|
+
// eslint-disable-next-line complexity
|
|
2538
|
+
const _sanitizeAttributes = function (
|
|
2539
|
+
currentNode: Element,
|
|
2540
|
+
root: Node
|
|
2541
|
+
): void {
|
|
2485
2542
|
/* Execute a hook if present */
|
|
2486
2543
|
_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
|
|
2487
2544
|
|
|
2545
|
+
/* A hook may have detached the node - the attribute hooks can detach
|
|
2546
|
+
exactly like the element hooks can, and the walker will not revisit
|
|
2547
|
+
the detached subtree. Treat it as removed and, on the IN_PLACE path,
|
|
2548
|
+
neutralize it (see _handleHookDetachedNode for the full rationale). */
|
|
2549
|
+
if (_handleHookDetachedNode(currentNode, root)) {
|
|
2550
|
+
return;
|
|
2551
|
+
}
|
|
2552
|
+
|
|
2488
2553
|
const { attributes } = currentNode;
|
|
2489
2554
|
|
|
2490
2555
|
/* Check if we have attributes; if not we might have a text node */
|
|
@@ -2520,6 +2585,16 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2520
2585
|
const initValue = attrValue;
|
|
2521
2586
|
let value = name === 'value' ? initValue : stringTrim(initValue);
|
|
2522
2587
|
|
|
2588
|
+
/* Tracks whether this specific attribute pushed a DOMPurify.removed
|
|
2589
|
+
record that a later _setAttributeValue() writeback is expected to pop
|
|
2590
|
+
back off (the SANITIZE_NAMED_PROPS remove-and-recreate below is the
|
|
2591
|
+
only path that does). A value that merely changed via trim, template
|
|
2592
|
+
scrubbing, or Trusted Types pushes no such record, so its writeback
|
|
2593
|
+
must NOT pop — otherwise it consumes an unrelated _forceRemove subtree
|
|
2594
|
+
record and that detached subtree escapes the IN_PLACE handler-
|
|
2595
|
+
neutralization pass (SO-001). */
|
|
2596
|
+
let recreatedNamedProp = false;
|
|
2597
|
+
|
|
2523
2598
|
/* Execute a hook if present */
|
|
2524
2599
|
hookEvent.attrName = lcName;
|
|
2525
2600
|
hookEvent.attrValue = value;
|
|
@@ -2540,6 +2615,9 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2540
2615
|
_removeAttribute(name, currentNode, attr);
|
|
2541
2616
|
// Prefix the value and later re-create the attribute with the sanitized value
|
|
2542
2617
|
value = SANITIZE_NAMED_PROPS_PREFIX + value;
|
|
2618
|
+
// This attribute owns the record just pushed; its recreate writeback
|
|
2619
|
+
// is the one allowed to pop it back off.
|
|
2620
|
+
recreatedNamedProp = true;
|
|
2543
2621
|
}
|
|
2544
2622
|
// Else: already prefixed, leave the attribute alone — the prefix is
|
|
2545
2623
|
// itself the clobbering protection, and re-applying it is incorrect.
|
|
@@ -2598,12 +2676,30 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2598
2676
|
|
|
2599
2677
|
/* Handle invalid data-* attribute set by try-catching it */
|
|
2600
2678
|
if (value !== initValue) {
|
|
2601
|
-
|
|
2679
|
+
const cleanWrite = _setAttributeValue(
|
|
2680
|
+
currentNode,
|
|
2681
|
+
name,
|
|
2682
|
+
namespaceURI,
|
|
2683
|
+
value
|
|
2684
|
+
);
|
|
2685
|
+
|
|
2686
|
+
/* Only the named-prop remove-and-recreate owns a DOMPurify.removed
|
|
2687
|
+
record to pop; a plain trim/template/Trusted-Types writeback owns
|
|
2688
|
+
none, so popping here would drop an unrelated subtree's cleanup
|
|
2689
|
+
record (SO-001). */
|
|
2690
|
+
if (cleanWrite && recreatedNamedProp) {
|
|
2691
|
+
arrayPop(DOMPurify.removed);
|
|
2692
|
+
}
|
|
2602
2693
|
}
|
|
2603
2694
|
}
|
|
2604
2695
|
|
|
2605
2696
|
/* Execute a hook if present */
|
|
2606
2697
|
_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
|
|
2698
|
+
|
|
2699
|
+
/* Same detach re-check as after beforeSanitizeAttributes: this is the
|
|
2700
|
+
last hook that runs for the node, so a detach here would otherwise
|
|
2701
|
+
hand the caller a live, handler-bearing subtree. */
|
|
2702
|
+
_handleHookDetachedNode(currentNode, root);
|
|
2607
2703
|
};
|
|
2608
2704
|
|
|
2609
2705
|
/**
|
|
@@ -2626,7 +2722,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2626
2722
|
_sanitizeElements(shadowNode, fragment);
|
|
2627
2723
|
|
|
2628
2724
|
/* Check attributes next */
|
|
2629
|
-
_sanitizeAttributes(shadowNode);
|
|
2725
|
+
_sanitizeAttributes(shadowNode, fragment);
|
|
2630
2726
|
|
|
2631
2727
|
/* Deep shadow DOM detected.
|
|
2632
2728
|
Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the
|
|
@@ -2906,8 +3002,16 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2906
3002
|
them before the main iterator runs, since the iterator does not
|
|
2907
3003
|
descend into shadow trees. The walk routes every read through a
|
|
2908
3004
|
cached prototype getter so clobbering descendants on a form root
|
|
2909
|
-
cannot hide a shadow host from this pass.
|
|
2910
|
-
|
|
3005
|
+
cannot hide a shadow host from this pass.
|
|
3006
|
+
|
|
3007
|
+
Traverse from `body`, not `importedNode`: when importedNode is a
|
|
3008
|
+
DocumentFragment, the appendChild() above moves its children into
|
|
3009
|
+
`body` and leaves the fragment empty, so walking importedNode would
|
|
3010
|
+
scan nothing and miss every attached shadow host now under `body`
|
|
3011
|
+
(SO-003). In the BODY/HTML branches `body === importedNode`, so this
|
|
3012
|
+
is equivalent there; in the element branch `body` contains the
|
|
3013
|
+
appended element and its descendants. `body` covers all three. */
|
|
3014
|
+
_sanitizeAttachedShadowRoots(body);
|
|
2911
3015
|
} else {
|
|
2912
3016
|
/* Exit directly if we have nothing to do */
|
|
2913
3017
|
if (
|
|
@@ -2958,7 +3062,7 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2958
3062
|
_sanitizeElements(currentNode, walkRoot);
|
|
2959
3063
|
|
|
2960
3064
|
/* Check attributes next */
|
|
2961
|
-
_sanitizeAttributes(currentNode);
|
|
3065
|
+
_sanitizeAttributes(currentNode, walkRoot);
|
|
2962
3066
|
|
|
2963
3067
|
/* Shadow DOM detected, sanitize it.
|
|
2964
3068
|
Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection
|
|
@@ -2992,13 +3096,38 @@ function createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {
|
|
|
2992
3096
|
move-hoist covers only disallowed-tag KEEP_CONTENT removals; strip the
|
|
2993
3097
|
non-allow-listed attributes off every other removed subtree (clobber,
|
|
2994
3098
|
mXSS, namespace, comments, KEEP_CONTENT:false, …) so those handlers are
|
|
2995
|
-
cancelled before any event can fire. Runs synchronously, pre-return.
|
|
3099
|
+
cancelled before any event can fire. Runs synchronously, pre-return.
|
|
3100
|
+
|
|
3101
|
+
The same pass also detects the one shape the attribute strip cannot
|
|
3102
|
+
make safe: the in-place ROOT was itself force-removed during the walk
|
|
3103
|
+
(a rawtext root killed by the LITERAL_TEXT_CLOSE probe, a clobbered
|
|
3104
|
+
root, an mXSS-canary root, …). Such a root is detached and, for a
|
|
3105
|
+
rawtext element, still carries a literal `</tag>`-bearing text payload
|
|
3106
|
+
that `_neutralizeSubtree`'s attribute-only strip does not touch, so
|
|
3107
|
+
re-serialising and re-parsing the returned node re-opens the markup.
|
|
3108
|
+
There is no safe node to hand back, so fail closed - identical in
|
|
3109
|
+
spirit to the parentless-root throw in `_forceRemove` and the
|
|
3110
|
+
clobbered-root throw at the IN_PLACE entry. Covers every present and
|
|
3111
|
+
future root-kill reason in one check, on both the attribute and text
|
|
3112
|
+
axes. */
|
|
3113
|
+
let rootWasRemoved = false;
|
|
2996
3114
|
arrayForEach(DOMPurify.removed, (entry) => {
|
|
2997
3115
|
if (entry.element) {
|
|
3116
|
+
if (entry.element === dirty) {
|
|
3117
|
+
rootWasRemoved = true;
|
|
3118
|
+
}
|
|
3119
|
+
|
|
2998
3120
|
_neutralizeSubtree(entry.element as Node);
|
|
2999
3121
|
}
|
|
3000
3122
|
});
|
|
3001
3123
|
|
|
3124
|
+
if (rootWasRemoved) {
|
|
3125
|
+
throw typeErrorCreate(
|
|
3126
|
+
'a node selected for removal could not be safely returned; ' +
|
|
3127
|
+
'refusing to sanitize in place'
|
|
3128
|
+
);
|
|
3129
|
+
}
|
|
3130
|
+
|
|
3002
3131
|
if (SAFE_FOR_TEMPLATES) {
|
|
3003
3132
|
_scrubTemplateExpressions(dirty as Element);
|
|
3004
3133
|
}
|