首页 > 解决方案 > 使用危险的SetInnerHtml 有什么风险以及是什么阻止了某人通过浏览器删除净化?

问题描述

我正在使用dangerouslySetInnerHtml将小胡子模板中的 html 渲染到 React 中。我正在阅读有关此安全问题 的信息,这对我来说是新的。

我的用例是我有一些包含 svg 的 html。这是静态的,不会从任何数据库中提取。我只想渲染这个。

我读到您应该“清理”html。在此给出的示例提供了人们在清理 html 时使用的库,然后在dangerouslySetInnerHtml属性中使用此清理过的变体。

但是,是什么阻止了某人简单地进入 JS 并通过 devtools 或其他东西编辑 html,从而不会进行清理。

我没有太多关于这方面的背景信息,所以很抱歉我不能举一个更具体的例子。

我已经尝试了许多将 html 解析为 React 的解析器。得出的结论是我需要使用 dangerouslySetInnerHtml

标签: javascripthtmlreactjsfrontendbrowser-security

解决方案


当此 HTML 代码来自 user时,您应该“清理”HTML ,就像您为用户输入的内容一样,可以将 HTML 代码提交到您的服务器,然后在其他用户的浏览器上显示。

“但是,是什么阻止了某人简单地进入 JS 并通过 devtools 或其他东西编辑 html,从而不会进行清理。” 这似乎不正确,对不起。原因是危险的 HTML 代码只能影响查看它的用户。如果他们在浏览器中编辑 JS 文件,那是没有意义的,因为他们是自己的受害者。

阅读有关https://en.wikipedia.org/wiki/Cross-site_scripting的更多信息(HTML 清理用于什么)


推荐阅读