Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

172
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!