如何清理节点 js 中的 req.log.error

How to sanitize the req.log.error in node js

我正在尝试修复 Checkmarx 扫描工具报告的问题,我尝试清理下面路由模块中的错误和请求。 但是,它仍然抱怨同样的错误。

index.js

const express = require('express')
const router = express.Router()

const fs = require('fs')
const config = require('config')
var _require = require('jsdom'),
    JSDOM = _require.JSDOM;

var window = new JSDOM('').window;
var DOMPurify = createDOMPurify(window);


function sanitizeError(value){
    return DOMPurify.sanitize(value);

}

function sanitizeObject(obj) {
  var sanitizedObject = {};
  Object.keys(obj).forEach(function (key) {
    sanitizedObject[key] = sanitizeValue(obj[key]);
  });
  return sanitizedObject;
};

//error handler route
router.use('/error',(err, req, res, next) => {

  //sanitizeObject(req)
  req.logger.error('uncaught error page', sanitizeError(err))
  res.redirect('/toanotehrerror page')  
})

module.exports = router

Checkmarx 错误:

Reflected_XSS 错误。它指的是上述模块

中的行req.logger.error

应用程序的 router.use 在生成的输出中错误地嵌入了不受信任的数据,位于 \routes\index.js 的第 x 行。这种不受信任的数据未经适当的清理或编码就直接嵌入到输出中,使攻击者能够将恶意代码注入到输出中。

攻击者可以通过简单地在用户输入错误中提供修改后的数据来更改返回的网页,这些数据由 \routes\index.js 第 x 行的 router.use 方法读取。该输入然后通过代码直接流向输出网页,没有经过清理。

这可以启用反射跨站点脚本 (XSS) 攻击。

Checkmarx 在其认可的消毒剂列表中没有 DOMPurify。它识别的是 ESAPI 库、xss-filters 和 htmlescape 包

https://www.npmjs.com/package/xss-filters

https://www.npmjs.com/package/node-esapi

https://www.npmjs.com/package/htmlescape

虽然从技术上讲您的代码可以防止 XSS,但我会使用上面的任何软件包重写它。例如,如果我们要使用 xss-filters:

var xssFilters = require('xss-filters');

function sanitizeError(value){
    return xssFilters.inHTMLData(value);

}