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

175
Vistas
Evitar el desinfectante de nodos xss en solicitudes de publicaciones específicas

El contexto es una API expresa de nodo, estoy usando xss-clean en mi archivo server.js principal:

 const xss = require('xss-clean'); // Prevent XSS attacks app.use(xss());

Problema: quiero guardar el texto enriquecido, pero se destruye durante el saneamiento.

Quiero mantener esta funcionalidad globalmente, sin embargo, me impide guardar texto enriquecido a través de editores de texto enriquecido en el front-end (es decir, tiptap-vue). El texto guardado con el editor contiene marcado html, que se escapa cuando se guarda en la base de datos, y cuando se vuelve a enviar al front-end a través de una solicitud de obtención, el texto se lee con los escapes y el marcado del elemento.

¿Hay alguna forma de evitar que este componente global funcione en una solicitud específica o en datos específicos dentro de una solicitud?

¿O hay alguna forma de desactivarlo para usarlo en la parte delantera?

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

0

Simplemente podría modificar el middleware desde su propia carpeta node_modules, y en el archivo de código fuente donde comienza a analizar el objeto de solicitud, podría agregar una lógica condicional que verifique si el objeto de solicitud cumple con las condiciones que está verificando, si es una solicitud específica o contiene los datos específicos dentro de la solicitud, y luego decide si usa o no la función de saneamiento en el objeto de la solicitud.

[Sin modificar] xss-clean/src/index.js:

 import { clean } from './xss' /** * export middleware * @return {function} Middleware function */ module.exports = function () { return (req, res, next) => { if (req.body) req.body = clean(req.body) if (req.query) req.query = clean(req.query) if (req.params) req.params = clean(req.params) next() } }

A

 import { clean } from './xss' /** * export middleware * @return {function} Middleware function */ module.exports = function () { return (req, res, next) => { if (req.url === "your route path") { //don't use clean() on request object OR you can store only the data you want //in a temp variable to avoid getting sanitized, then sanitize the request //object with clean(), and then replace that sanitized data with the data //in the temp variable OR as a new property in the req object const dataPoint = req.body.something.dataPoint; req.body = clean(req.body); req.body.something.dataPoint = dataPoint; return next(); } if (req.body) req.body = clean(req.body) if (req.query) req.query = clean(req.query) if (req.params) req.params = clean(req.params) next() } }

Esto es un poco hacky, pero hace el trabajo. Es peligroso no desinfectar a menos que esté seguro de que no será un problema. También podría simplemente no usar este middleware globalmente en su aplicación, y usarlo solo en las rutas que desea que este middleware desinfecte.

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