React使用dangerouslySetInnerHTML渲染HTML片段
正在加载今日诗词....
2022-08-01
  • Vue中可以通过v-html将HTML片段直接渲染在页面上,v-html对字符串进行过滤输入转义输出可以有效避免xss攻击
  • React中同样可以渲染HTML————dangerousSetInnerHtml,和v-html类似
const main = () => {
  const html = '<h1>hello world</h1>';
  return <div dangerousSetInnerHtml={{ __html: html }}></div>
}

dangerousSetInnerHtml渲染的HTML内容是没有经过过滤或转义的,所以很容易遇到XSS攻击

解决方法

可以通过 dompurify.sanitize 进行过滤

const main = () => {
  const html = '<h1>hello world</h1>';
  return <div dangerousSetInnerHtml={{ __html: DOMPurify.sanitize(html) }}></div>
}

京ICP备2022027737号
Copyright © 2022 - present @wangxiang

  • ☀️
  • 🌑