我使用 React 构建了一个存储文档的 Web 应用程序。这些是用 HTML 创建的,然后存储在数据库中。为了在应用程序中显示它们,我div
使用dangerouslySetInnerHTML
.
<div dangerouslySetInnerHTML={{__html: this.props.page.content}} />
即使这工作得非常好,dangerouslySetInnerHTML
顾名思义,还是要更加注意这种情况,但我想知道究竟可以做些什么来保持足够的灵活性来加载 HTML 并使其出现在 Web 应用程序中。我相信危险一词解决了跨站点脚本的危险,这意味着可以注入脚本,执行有害代码。
作为对策,我想在将 HTML 代码解析为div
. 解决此问题的一个库是DOMPurify。另一种方法是使用html-react-parser将数据库中的 HTML 代码直接转换为 React Elements 。
那是正确的方法吗?或者有替代品dangerouslySetInnerHTML
吗?