首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >dangerouslySetInnerHTML的安全替代品

dangerouslySetInnerHTML的安全替代品
EN

Stack Overflow用户
提问于 2015-03-14 09:40:52
回答 4查看 64K关注 0票数 87

我想在我的网站上有一个动态的博客(使用React)。最初,我打算将帖子以原始超文本标记语言存储在数据库中,并使用dangerouslySetInnerHTML生成内容。然而,我对其安全影响感到担忧。虽然我的应用程序没有任何敏感数据,但我对XSS还不够精通,不知道打开我的应用程序会遇到的所有危险。

我很好奇是否有一种高效、安全的方法来在我的应用程序中动态加载博客页面。在这种情况下,使用https://github.com/odysseyscience/react-router-proxy-loader会有用吗?将博客帖子JSX的文件夹与我的应用程序的其余部分分开,并使用此文件夹加载它(诚然,我不确定react-router-proxy-loader是如何工作的)。

我乐于接受大家的建议。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-14 19:10:09

如果XSS是您的主要关注点,那么在通过dangerouslySetInnerHTML将其插入到DOM之前,可以使用DOMPurify对其进行清理。它只是缩小了10K。And it works in Node too.

票数 74
EN

Stack Overflow用户

发布于 2019-09-05 16:00:04

文章How to prevent XSS attacks when using dangerouslySetInnerHTML in React建议使用JAM3/no- sanitizer with-danger eslint规则来检查传递给dangerouslySetInnerHTML的内容是否包装在这个杀毒函数中

有效代码的示例如下

代码语言:javascript
复制
const sanitizer = dompurify.sanitize;
return <div dangerouslySetInnerHTML={{__html: sanitizer(title)}} />; // Good

它还描述了3个杀菌器库:

DOMPurify

Xss

xss-filters

票数 23
EN

Stack Overflow用户

发布于 2015-06-25 04:22:59

https://facebook.github.io/react/tips/dangerously-set-inner-html.html

“道具名称dangerouslySetInnerHTML是故意选来吓人的……”

“在充分了解安全后果并对数据进行适当的消毒之后...”

我想,如果你信任你自己的内容管理系统/服务器(而不是从第三方接收),它已经对数据进行了消毒(这一步也完成了),那么你可以使用dangerouslySetInnerHTML插入。

正如Morhaus所说,也许可以使用DOMPurify来处理这个不幸的问题:“所以提供的超文本标记语言必须是格式良好的(即通过XML验证)。”我怀疑使用HTML5的非XML版本的一些内容可能会有问题。(注意:我自己还没有用过它,因为我和你一样是新手。)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29044518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档