首页 > 解决方案 > 从经过消毒的 html 中设置 innerHtml 仍然很危险吗?

问题描述

在 react 中有一个 innerHtml 的替代品:dangerouslySetInnerHTML。

它的名字让我害怕。

在 React 文档中,我读到:

一般来说,从代码中设置 HTML 是有风险的,因为很容易无意中将您的用户暴露给跨站点脚本 (XSS) 攻击。

但是我用 dompurify 清理了我的 html。这是否完全保护我免受 XSS 攻击?

标签: javascripthtmlreactjs

解决方案


但是我用 dompurify 清理了我的 html。这是否完全保护我免受 XSS 攻击?

可能是的,但不是 100% 保证的。如果 DOMPurify 没有让 XSS 通过的错误,那么设置innerHTMLdangerouslySetInnerHTML使用其结果将是安全的。DOMPurify 是开源的并且比较流行,所以如果它确实有这样的漏洞,它们现在可能已经被发现了。

但是,就像人类所做的一切一样,导致漏洞未被发现的错误和巧合仍然是可能的。


推荐阅读