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