如何安全地从React组件渲染Markdown?

Duk*_*gal 2 markdown reactjs

我想在我的ReactJS应用程序中显示markdown,但重要的是它安全地完成了.我将显示的降价文件是不受信任的公共内容.

我见过各种解决方案,他们都使用dangerouslySetInnerHTML.

我不禁想到这可能是危险的.

有人有主意吗?

谢谢

Joe*_*lay 7

他们dangerouslySetInnerHTML故意给出了一个可怕的名字,以确保人们会非常仔细地考虑他们是否需要使用它/他们是否正确使用它.看到你问这个问题,显然它已经完成了这项工作!但Markdown渲染实际上是必要的一个实例.

基本上,它归结为:dangerouslySetInnerHTML只有当你不确定你投入的东西是否安全时才危险.小心,但不要被它吓到!

编辑:正如Waylan在评论中提到的那样,我给出的例子非常幼稚,没有考虑其他方式可以通过Markdown实现XSS攻击.很可能你会想要通过清洁剂而不是/和输入来运行输出,否则很有可能生成恶意HTML,而不会像嵌入script标签那样简单.我的答案的要点仍然是相同的; dangerouslySetInnerHTML只会像你投入的那样危险.做你的研究,确保输入是安全的,你会没事的.