多姆纯化将"<"转换为"<"



我使用DOMPurify来净化我的HTML内容。一切工作正常,但当我使用字符<>时,它被转换为&lt;&gt;

例如:We have <a>Tea</a> // Outputs: We have Tea

例如:Use '<' and '>' to compare values // Outputs: Use '&lt;' and '&gt;' to compare values

问题是第二个例子。我想把它显示为<而不是%lt;

所以我唯一的选择是在通过DOMPurify之后执行一个字符串替换,用<>替换&lt;&gt;。还有其他选择吗?

好吧,我有类似的情况,我的字段的值,如<img onload="alert('hacked') />将转向<img>,<p> Testing </p>将转向<p> Testing </p>,但Test < Test2将转向Test &lt; Test。解决方案:取Dompuriy返回的值,找到&lt; and &gt;并将其替换为< and >;注意,此解决方案可能需要在安全性方面进行一些权衡。下面是函数:

export const convertHtmlEntityToAngleBrackets = (fieldText) => {
const htmlEntities = /&(lt|gt);/
const isHtmlEntityUsed = htmlEntities.test(fieldText)
if (isHtmlEntityUsed) {
return fieldText.replace(/&lt;/g, '<').replace(/&gt;/g, '>')
} else {
return fieldText
}
}

dangerouslySetInnerHTML

<div dangerouslySetInnerHTML={{ __html: renderValue() }} />

(信用:@Bergi

相关内容

最新更新