Javascript 为什么DOMPurify与SAFE_FOR_模板一起删除数据属性?

Javascript 为什么DOMPurify与SAFE_FOR_模板一起删除数据属性?,javascript,security,vue.js,xss,dompurify,Javascript,Security,Vue.js,Xss,Dompurify,我偶然发现了一个奇怪的行为,即当使用默认选项进行清理时,data-*属性被保留,而当使用SAFE\u FOR_模板选项时,属性被剥离。此外,包含模板的整个文本将被剥离,而不仅仅是模板部分 这些是bug还是特性?这些理由是什么 constdirty='Hello{{{World}}'; console.log( domprify.消毒(脏的) //期待你好{{World} //实际你好{{World} ); console.log( sanitize(脏,{SAFE_FOR_TEMPLATES:

我偶然发现了一个奇怪的行为,即当使用默认选项进行清理时,
data-*
属性被保留,而当使用
SAFE\u FOR_模板
选项时,属性被剥离。此外,包含模板的整个文本将被剥离,而不仅仅是模板部分

这些是bug还是特性?这些理由是什么

constdirty='Hello{{{World}}';
console.log(
domprify.消毒(脏的)
//期待你好{{World}
//实际你好{{World}
);
console.log(
sanitize(脏,{SAFE_FOR_TEMPLATES:true})
//期待你好
//实际的
);

请注意,在他们说的>中,不建议将此模式用于生产使用。//完全不建议允许在用户控制的HTML中进行模板解析。@RoyJ-yup我读过;)但是谢谢!您是否偶然发现一些文档详细解释了
SAFE\u FOR\u模板
选项背后的预期行为和/或基本原理?我没有明确的答案,但我注意到,Knockout使用
data-
属性进行绑定,所以可能这就是基本原理。