危险地替代SetInnerHTML

时间:2018-11-23 16:21:32

标签: html reactjs jsx code-injection tsx

我使用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的替代品?

1 个答案:

答案 0 :(得分:1)

也许这些解析器可以满足您的需求

html-to-react

html-react-parser