javascript - 使用危险的SetInnerHtml 有什么风险以及是什么阻止了某人通过浏览器删除净化?
问题描述
我正在使用dangerouslySetInnerHtml
将小胡子模板中的 html 渲染到 React 中。我正在阅读有关此安全问题 的信息,这对我来说是新的。
我的用例是我有一些包含 svg 的 html。这是静态的,不会从任何数据库中提取。我只想渲染这个。
我读到您应该“清理”html。在此给出的示例提供了人们在清理 html 时使用的库,然后在dangerouslySetInnerHtml
属性中使用此清理过的变体。
但是,是什么阻止了某人简单地进入 JS 并通过 devtools 或其他东西编辑 html,从而不会进行清理。
我没有太多关于这方面的背景信息,所以很抱歉我不能举一个更具体的例子。
我已经尝试了许多将 html 解析为 React 的解析器。得出的结论是我需要使用 dangerouslySetInnerHtml
解决方案
当此 HTML 代码来自 user时,您应该“清理”HTML ,就像您为用户输入的内容一样,可以将 HTML 代码提交到您的服务器,然后在其他用户的浏览器上显示。
“但是,是什么阻止了某人简单地进入 JS 并通过 devtools 或其他东西编辑 html,从而不会进行清理。” 这似乎不正确,对不起。原因是危险的 HTML 代码只能影响查看它的用户。如果他们在浏览器中编辑 JS 文件,那是没有意义的,因为他们是自己的受害者。
阅读有关https://en.wikipedia.org/wiki/Cross-site_scripting的更多信息(HTML 清理用于什么)
推荐阅读
- xamarin.forms - Xamarin Forms 4.4 + 中是否仍需要此 ExportRenderer
- html - 如何在 .ts 文件中以角度创建按钮并添加点击事件
- javascript - 正则表达式 - 在最少两个字符之后
- python - 如何使用 API 获取 Reddit 提交的评论?
- windows - 识别文件是否未写入的程序
- python - (Python) 打印所有 '\' 转义字符
- javascript - 如何从 Node.js 连接到 MySQL(phphmyadmin)?
- azure - 使用命令行参数启动时 Azure ACI 容器部署失败
- c# - 在 UWP ListView 中实现数据虚拟化而不复制项目
- count - 需要计算一个值的位数时的 DB2 案例