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