我应该在将响应数据发送给客户端之前对其进行清理吗?

问题描述 投票:0回答:1

我正在使用 express-xss-sanitizer 包来清理 Node.js Express 应用程序中的传入请求。但是,我仍然看到 Checkmarx 报告的有关潜在 XSS 攻击的问题。我想知道在将响应数据发送给客户端之前是否需要对其进行清理。

我一直认为清理输入数据足以防止 XSS 攻击。然而,Checkmarx 的反复警告让我怀疑自己的理解。有人可以澄清我是否也需要清理响应数据吗?

[![charityApiRouter.get('/charity/getCampaigns', async (req, res) => {
  const \[err, responseBody\] = await getCampaignData(req);
  if (err) {
    res.status(400).send({ success: false, err });
    return;
  }
  res._end = true;
  res.jsonp({
    success: true,
    data: responseBody.data,
  });
});][1]][1]

node.js express security xss npm-vulnerabilities
1个回答
0
投票

您无需清理响应,因为响应是由您的应用程序代码使用提供的输入生成的。如果输入经过清理,响应也将是干净的(除非您的业务逻辑本身存在一些问题)。但你应该做的是发送你想要的确切数据。这意味着您应该发送您希望用户使用的特定字段,而不是直接发送数据对象(这很可能是数据库查询结果),例如:

res.json({ 
data: {
key1: value1,
key2: value2
} })

这确保用户只获得您期望他们获得的数据。如果您正在开发公共 api,这一点尤其重要。这样您也不会向客户端泄露任何不必要的元数据。

© www.soinside.com 2019 - 2024. All rights reserved.