【问题标题】:Alternative to dangerouslySetInnerHTML替代危险的SetInnerHTML
【发布时间】:2019-04-26 06:19:11
【问题描述】:

我使用 React 构建了一个存储文档的 Web 应用程序。这些是用 HTML 创建的,然后存储在数据库中。为了在应用程序中显示它们,我通过使用 dangerouslySetInnerHTML 将 HTML 加载到 div 中。

<div dangerouslySetInnerHTML={{__html: this.props.page.content}} />

即使这样工作得很好,dangerouslySetInnerHTML 这个名字也建议对这种情况给予更多的关注,但我想知道究竟可以做些什么来保持足够的灵活性来加载 HTML 并使其出现在 Web 应用程序中。我相信 dangerous 这个词解决了跨站点脚本的危险,这意味着可以注入脚本,执行有害代码。

作为对策,我想在将 HTML 代码解析为div 之前对其进行清理。一个解决这个问题的图书馆是DOMPurify。另一种方法是使用 html-react-parser 将数据库中的 HTML 代码直接转换为 React Elements。

这是正确的方法吗?或者有没有dangerouslySetInnerHTML 的替代品?

【问题讨论】:

标签: html reactjs jsx code-injection tsx


【解决方案1】:

也许这些解析器可以满足你的需要

html-to-react

html-react-parser

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-30
    • 2021-01-23
    • 2021-07-24
    • 2016-09-17
    • 2021-01-19
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多