Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

212
Vistas
Cómo desinfectar el req.log.error en el nodo js

Estoy tratando de solucionar el problema informado de la herramienta de escaneo Checkmarx, traté de desinfectar el error y el requerimiento en el siguiente módulo de ruta. Sin embargo, todavía se queja del mismo error.

índice.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

Error de Checkmarx:

Error reflejado_XSS. Se refiere a la línea req.logger.error en el módulo anterior

El router.use de la aplicación incrusta datos que no son de confianza en la salida generada con error, en la línea x de \routes\index.js. Estos datos no confiables se incrustan directamente en la salida sin la desinfección o codificación adecuadas, lo que permite a un atacante inyectar código malicioso en la salida.

El atacante podría alterar la página web devuelta simplemente proporcionando datos modificados en el error de entrada del usuario, que lee el método router.use en la línea x de \routes\index.js. Esta entrada luego fluye a través del código directamente a la página web de salida, sin desinfección.

Esto puede habilitar un ataque de secuencias de comandos cruzadas reflejadas (XSS).

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Checkmarx no tiene DOMPurify en la lista de sus desinfectantes reconocidos. Lo que sí reconoce son la librería ESAPI, xss-filters y paquetes htmlescape

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

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

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

Si bien técnicamente su código puede evitar XSS, lo reescribiría usando cualquiera de los paquetes anteriores. Por ejemplo, si vamos a usar xss-filters :

 var xssFilters = require('xss-filters'); function sanitizeError(value){ return xssFilters.inHTMLData(value); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda