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