有什么方法可以让用户上传的 SVG 图像免受代码注入等影响?

2024-04-02

我想在网站上显示用户上传的 SVG 图像,但它们很容易被利用:

  • https://security.stackexchange.com/questions/11384/exploits-or-other-security-risks-with-svg-upload https://security.stackexchange.com/questions/11384/exploits-or-other-security-risks-with-svg-upload
  • https://security.stackexchange.com/questions/36447/img-tag-vulnerability https://security.stackexchange.com/questions/36447/img-tag-vulnerability

例如,任意 javascript 可以嵌入到 SVG 中 https://html5sec.org/#47。性能利用也存在问题,但我认为这些问题的优先级较低。

是否有任何机制可以使 SVG 更加​​安全并且仅将其用作图像?我可以简单地相信吗<img src="/media/user-uploaded-image.svg" />?

维基百科/维基共享资源托管 SVG 文件。有谁知道他们采取什么措施来防止 SVG 漏洞?


维基百科/维基共享资源托管 SVG 文件。有谁知道他们采取什么措施来防止 SVG 漏洞?

他们从单独的主机名提供上传的文件,特别是upload.wikimedia.org。你可以跨站点脚本进入那里,但它不会给你带来任何东西:它存在于不同的起源中en.wikipedia.org并且无法触摸其 cookie 或与其脚本交互。

这最终是处理文件上传的唯一无懈可击的方式,也是大多数大公司所做的。当您允许任意文件时,要彻底扫描所有许多模糊的 XSS 可能性是非常困难的。

我可以简单地相信吗<img src="/media/user-uploaded-image.svg" />?

什么并不重要<img>确实如此——用户可以直接导航到 SVG 地址,并且它将在站点的源中执行整页脚本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以让用户上传的 SVG 图像免受代码注入等影响? 的相关文章

  • 从 thymeleaf 获取数据到模态引导程序、jquery

    我正在尝试获取模态视图的 id 这是为了更新 onclick 元素 但我找不到方法 知道如何为 boostrap 5 完成此操作 或我可以用其他方法吗 谢谢 tr a inactivate a div class modal fade mo
  • dojo dijit.form.DateTextBox 约束不起作用,datetextbox

    嗨 我是 javascript 和 dojo 的新手 我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围 一旦选择了开始日期或结束日期 我想限制可用的日期 以便不可能选择按时间顺序排列在开始日期
  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 在 Vue.js 中从父组件执行子方法

    目前 我有一个 Vue js 组件 其中包含其他组件的列表 我知道使用 vue 的常见方式是将数据传递给孩子 并从孩子向父母发出事件 但是 在这种情况下 我想在子组件中的按钮出现时执行子组件中的方法 parent被点击 哪种方法最好 一种建
  • 如何重置使用 JavaScript 更改的 CSS 属性?

    我的导航按钮的宽度从 100px 增加到 150px 当鼠标悬停在 nav li hover width 150px 但是使用 javascript 我已经做到了 无论选择哪个选项 宽度都将继续为 150px 当选择每个选项时 它会使其他选
  • 使用 jQuery/JS 打开时使
    标签的内容具有动画效果

    我只想要 HTML5 的内容details标记为 滑行 动画打开 而不是仅仅弹出打开 立即出现 这可以用 jQuery Javascript 实现吗 Fiddle http jsfiddle net 9h4Hq HTML
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 提交表单并重定向页面

    我在 SO 上看到了很多与此相关的其他问题 但没有一个对我有用 我正在尝试提交POST表单 然后将用户重定向到另一个页面 但我无法同时实现这两种情况 我可以获取重定向或帖子 但不能同时获取两者 这是我现在所拥有的
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • Ninject:每个被拦截的类实例有一个拦截器实例?

    我目前遇到一个问题 尝试为每个被拦截的类实例连接一个拦截器实例 我正在 InterceptorRegistrationStrategy 中创建 Advice 并设置回调以解析来自内核的拦截器 它有一个注入构造函数 请注意 我只能在回调中实例
  • 即使没有来自客户端的连接,选择器也会无限循环

    我是 Java NIO 的新手 在阅读了一些教程后 我尝试自己编写一个简单的 NIO 服务器和客户端 我的服务器只做了一件简单的事情 就是从客户端监听并打印到控制台 客户端只需连接到服务器并向其发送 3 条消息 Hello 问题是我的服务器
  • .NET / C# 拼写检查器

    有人知道 C NET 的多语言拼写检查器吗 我的意思是 我有它和我找到了一些替代方案 但是有人有一个很好的成功故事吗 我需要在我的应用程序中添加拼写检查器 我想要一个集成的库System Windows Forms TexBox 例如 另外
  • 使用 std::codecvt_xxx 将 C++ std::wstring 转换为 utf8

    C 11有转换宽字符字符串的工具std wstring从 到 utf8 表示 std codecvt std codecvt utf8 std codecvt utf8 utf16 etc Windows 应用程序可使用哪一个来转换常规宽字
  • C++ 向量大小类型

    我刚刚开始学习 C 有一个关于向量的问题 我正在读的书指出 如果我想提取 double 类型向量的大小 例如 我应该这样做 vector
  • 为什么不能在 switch 语句中声明变量?

    我想了解更多关于 为什么不能在 switch 语句中声明变量 https stackoverflow com questions 92396 why cant variables be declared in a switch statem
  • 显示为“n”、“p”或“f”的小数字

    我正在使用绘图来绘制一些数据 小数字 我看到奇怪的格式 例如78 98p 576 65n 678 76f 这些F是什么 没有任何地方解释这些是什么 我怎样才能把它们变成带有 E 的科学记数法 看到这个https plot ly python
  • Visual Studio 代码:缺少 X509Certificate2UI

    尝试使用时出现以下错误X509Certificate2UI在 VS 代码中 命名空间 System Security Cryptography X509Certificates 中不存在类型或命名空间名称 X509Certificate2U
  • 递归的优点和缺点是什么?

    关于在排序算法中使用递归而不是非递归方法 或者就此而言 任何算法的优点和缺点是什么 大多数情况下 递归速度较慢 并且占用更多堆栈 递归的主要优点是 对于像树遍历这样的问题 它使算法变得更容易或更 优雅 看看一些比较 link http pa
  • Oracle 是否存储 Number 数据类型的尾随零?

    当我在表中存储数值并在 SQL Developer 中查询该表时 它没有显示数字数据类型的尾随零 create table decimal test decimal field number 10 insert into decimal t
  • 使用强化学习训练神经网络

    我了解前馈神经网络的基础知识 以及如何使用反向传播算法训练它们 但我正在寻找一种可以用于通过强化学习在线训练 ANN 的算法 例如 车杆向上摆动 http www google com search q cart 20pole 20swin
  • 带有子项的 ViewComponents

    我可以在这样的页面中使用 ViewComponents 吗
  • 将 CSV 数据导入 Google 表格

    当尝试使用IMPORTDATA该文件的函数 https www kaggle com stefanoleone992 fifa 20 complete player dataset players 20 csv https www kagg
  • JSF 获取托管 bean 中的当前操作

    当用户点击任意一个commandButton 然后在托管bean中调用相应的操作 是否可以从以下位置获取此操作名称 PostConstruct方法还是来自事件监听器方法 按钮的名称 值对本身可作为 HTTP 请求参数以通常的方式使用 想象一
  • 为什么我的 MVC3 Intranet 站点 Windows 身份验证在发布时不起作用

    我们有一个使用 MVC3 和实体框架的简单 Intranet 站点 一切正常 可以在 Visual Studio 中进行调试 当我将站点发布到本地盒子 IIS7 5 Web 服务器或同一域上的开发盒子时 系统会提示我输入用户名和密码 但它不
  • JS中如何获取对象数组的特定属性?

    我有以下代码和测试数据 const getNestedObject nestedObj pathArr gt return pathArr reduce obj key gt return obj obj key undefined obj
  • Visit_Psych_Nodes_Alias:未知别名:默认(Psych::BadAlias)

    我从 ruby 2 7 1 更新到 3 1 1 然后删除 Gemfile lock 并运行bundle update 它位于开发分支上 所以如果这是一个坏主意我可以扔掉它 我只是想看看它是否有效 bundle update成功了 但是当我启
  • knockout.js 将表单加载到 viewModel 中

    我目前正在成功使用 knockout js 来处理应用程序中的所有数据绑定 但是 在每个页面加载时 在我的 document ready 中 我正在执行初始异步数据加载 如下所示 document ready getData 但是 是否可以
  • pandas 附加到具有不同名称的列

    如何附加2个具有不同列名的不同数据框 a pd DataFrame id 0 1 2 3 countryid 22 36 21 64 famousfruit banana apple mango orange famousanimal mo
  • 有什么方法可以让用户上传的 SVG 图像免受代码注入等影响?

    我想在网站上显示用户上传的 SVG 图像 但它们很容易被利用 https security stackexchange com questions 11384 exploits or other security risks with sv