我偶然发现了DOMPurify的一个奇怪行为,在data-*
使用默认选项进行清理时属性会留下,但在使用该SAFE_FOR_TEMPLATES
选项时会被剥离。此外,包含模板的整个文本将被删除,而不仅仅是模板部分。
这些是错误还是功能?这些的理由是什么?
const dirty = '<span data-foo="bar"> Hello {{ World }} </span>';
console.log(
DOMPurify.sanitize(dirty)
// expected <span data-foo="bar"> Hello {{ World }} </span>
// actual <span data-foo="bar"> Hello {{ World }} </span>
);
console.log(
DOMPurify.sanitize(dirty, { SAFE_FOR_TEMPLATES: true })
// expected <span data-foo="bar"> Hello </span>
// actual <span> </span>
);
<script src="https://unpkg.com/dompurify@2.0.0/dist/purify.min.js"></script>