当前位置: 首页 > 知识库问答 >
问题:

文件下载 - 存储在脚本中的 XSS 漏洞

苍轶
2023-03-14

我有3种类型的文件(XML、PDF、zip)存储在我的服务器文件中,并根据请求以base64格式发送给用户(客户端)(当客户端单击一个按钮时)。< br >文件被下载到用户的计算机上,并且不显示(在HTML页面上)。

我使用Checkmarx服务进行了安全测试,收到了安全问题:
“MyFile.js第58行的方法函数从数据库中为readFileSync元素获取数据。然后,该元素的值在未经正确筛选或编码的情况下流经代码,并最终显示给MyFile.js第58行方法函数中的用户。这可能会启用存储跨站点脚本攻击(XSS)。”。

我服务器端的代码是:

var fs = require('fs');

downloadFile: function (req, res) {
  var params = req.allParams();
  var contents = fs.readFileSync(FilePathInTheProject).toString('base64');
  res.send(contents);
},

我不明白无法从客户端访问的服务器存储文件如何启用存储跨站点脚本攻击(XSS)?

如何验证漏洞的存在?

解决这个安全问题的正确方法是什么?

共有2个答案

卞嘉许
2023-03-14

您必须检查谁有权访问存储在文件系统上的文件。这些文件值得信赖吗?您是如何阻止对这些文件的访问的?它们可以被修改吗(脚本注入)?默认情况下,文件系统上的数据库或文件不应被视为值得信赖的数据源。返回给用户的所有数据都应经过验证。

谷良弼
2023-03-14

Checkmarx认为您从来源获取任何内容都没有经过任何验证。因此,数据不会因此而受到污染,如果您将其发送给客户端,则可能会发送到XSS。

如果我们的观点没有您的解释,这是正确的。

@Cilian柯林斯的解释是正确的。这样,您就可以将问题标记为“不可利用”,下次扫描时,这不会显示给您。或者,如果您有更多的时间,则可以扩展 Cx 规则以执行该操作:)

 类似资料:
  • ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "下载专用程序" !define PRODUCT_VERSION "1.0" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" ; MUI 预定义常量 !d

  • 在Android中使用和iOS中使用下载存储文件,是否仍然在暗中使用下载uri方法,即在uri末尾使用不可猜测的标记? 我的要求禁止我们向世界公开这样的URL,所以问题是: null

  • 那是外部存储代码,但我想保存在Android手机的内部存储。

  • 我正在完成Android的任务。 我从URL下载文件并保存在android手机的内部存储/目录中?我的代码写在下面,但这是外部存储代码,我想要内部存储代码。 这是外部存储代码,但我想保存在Android手机的内部存储中。

  • 我有一个python脚本,它获取已上传到google云存储桶的文件列表,并尝试以字符串形式检索数据。 代码很简单: 我的问题是,我上传的数据存储在bucket中的文件夹中,因此路径类似于: 当google library试图下载文件时,它会以GET请求的形式获取该文件,该请求将上述路径转换为: 有没有办法阻止这种情况发生/通过这种方式下载文件?干杯