我想在我的网站上有一个动态的博客(使用React)。最初,我打算将帖子以原始超文本标记语言存储在数据库中,并使用dangerouslySetInnerHTML生成内容。然而,我对其安全影响感到担忧。虽然我的应用程序没有任何敏感数据,但我对XSS还不够精通,不知道打开我的应用程序会遇到的所有危险。
我很好奇是否有一种高效、安全的方法来在我的应用程序中动态加载博客页面。在这种情况下,使用https://github.com/odysseyscience/react-router-proxy-loader会有用吗?将博客帖子JSX的文件夹与我的应用程序的其余部分分开,并使用此文件夹加载它(诚然,我不确定react-router-proxy-loader是如何工作的)。
我乐于接受大家的建议。
发布于 2015-03-14 19:10:09
如果XSS是您的主要关注点,那么在通过dangerouslySetInnerHTML
将其插入到DOM之前,可以使用DOMPurify
对其进行清理。它只是缩小了10K。And it works in Node too.
发布于 2019-09-05 16:00:04
文章How to prevent XSS attacks when using dangerouslySetInnerHTML in React建议使用JAM3/no- sanitizer with-danger eslint规则来检查传递给dangerouslySetInnerHTML的内容是否包装在这个杀毒函数中
有效代码的示例如下
const sanitizer = dompurify.sanitize;
return <div dangerouslySetInnerHTML={{__html: sanitizer(title)}} />; // Good
它还描述了3个杀菌器库:
Xss。
发布于 2015-06-25 04:22:59
https://facebook.github.io/react/tips/dangerously-set-inner-html.html
“道具名称dangerouslySetInnerHTML是故意选来吓人的……”
“在充分了解安全后果并对数据进行适当的消毒之后...”
我想,如果你信任你自己的内容管理系统/服务器(而不是从第三方接收),它已经对数据进行了消毒(这一步也完成了),那么你可以使用dangerouslySetInnerHTML
插入。
正如Morhaus所说,也许可以使用DOMPurify来处理这个不幸的问题:“所以提供的超文本标记语言必须是格式良好的(即通过XML验证)。”我怀疑使用HTML5的非XML版本的一些内容可能会有问题。(注意:我自己还没有用过它,因为我和你一样是新手。)
https://stackoverflow.com/questions/29044518
复制相似问题