0

我正在使用DomPurify清理 SVG 代码。

它工作正常但是如果在文本区域中输入的 SVG 代码无效,我想显示一条消息。

我正在尝试将添加的 SVG 代码与已清理的 SVG 代码进行比较。如果它们不同,我将显示一条消息。

function validate() {
  if( svgCode.trim() === DOMPurify.sanitize(svgCode).trim() ) {
    console.log('All right!');
  } else {
    console.log('Uuuh-oooh! The SVG code is not valid!');
  }
}

validate();

问题:我不断得到,Uuuh-oooh! The SVG code is not valid!因为 dompurify 将关闭路径/>变成完整路径'`。

4

1 回答 1

0

您可以使用removed属性来检查是否发生了任何消毒。

例如

  DOMPurify.sanitize('<svg onload=alert(1) />');
  console.log(DOMPurify.removed.length); // 1
  DOMPurify.sanitize('<svg />');
  console.log(DOMPurify.removed.length); // 0

https://github.com/is2ei/DOMPurify#okay-makes-sense-lets-move-on

清理标记后,您还可以查看属性 DOMPurify.removed 并找出哪些元素和属性被丢弃了。请不要将此属性用于做出任何安全关键决策。这只是好奇的头脑的一个小帮手。

于 2022-02-23T15:50:47.180 回答