我想在我的ReactJS应用程序中显示markdown,但重要的是它安全地完成了.我将显示的降价文件是不受信任的公共内容.
我见过各种解决方案,他们都使用dangerouslySetInnerHTML.
我不禁想到这可能是危险的.
有人有主意吗?
谢谢
他们dangerouslySetInnerHTML故意给出了一个可怕的名字,以确保人们会非常仔细地考虑他们是否需要使用它/他们是否正确使用它.看到你问这个问题,显然它已经完成了这项工作!但Markdown渲染实际上是必要的一个实例.
基本上,它归结为:dangerouslySetInnerHTML只有当你不确定你投入的东西是否安全时才危险.小心,但不要被它吓到!
编辑:正如Waylan在评论中提到的那样,我给出的例子非常幼稚,没有考虑其他方式可以通过Markdown实现XSS攻击.很可能你会想要通过清洁剂而不是/和输入来运行输出,否则很有可能生成恶意HTML,而不会像嵌入script标签那样简单.我的答案的要点仍然是相同的; dangerouslySetInnerHTML只会像你投入的那样危险.做你的研究,确保输入是安全的,你会没事的.