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

141
Vistas
¿Puede decirme si express-mongo-sanitize está funcionando?

Estoy tratando de configurar un middleware de seguridad para mi pequeña y humilde aplicación web MERN, y actualmente estoy usando helmet y express-mongo-sanitize, específicamente para la protección contra ataques de inyección NoSQL.

Sin embargo, lo configuré como se muestra a continuación en mi archivo server.js:

 const express = require('express') const helmet = require('helmet') const mongoSanitize = require('express-mongo-sanitize') ... app.use(mongoSanitize()) app.use(helmet()) // Routes below ...

Intenté probarlo haciendo un registro simulado como:

nombre de usuario: {"$gt": ""} contraseña: 'TestPassword'

por lo que req.body sería:

 { username: '{"$gt": ""}', password: 'TestPassword' }

pero express-mongo-sanitize no parece detectarlo y pasa a mi base de datos. ¿Estoy malinterpretando algo? El valor de la clave de nombre de usuario es una cadena, ¿quizás ya esté bien? Disculpen mi ignorancia, estoy aprendiendo.

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

0

Lo que hace express-mongo-sanitize es desinfectar las teclas que comienzan con un signo de dólar.

 username: '{"$gt": ""}' --> this isn't a key starting with a dollar sign. Rather, the value of username is just a string.

Intenta enviarle este objeto en su lugar:

 { "username": { "$gt": "" } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Por lo que entendí, desde la depuración y revisión del código, las claves que desinfecta son cualquier clave potencial en un par clave = valor de consulta y parámetros de publicación que tienen $ o un punto. También intenta desinfectar las claves en el cuerpo y el encabezado de la solicitud.

Por ejemplo, incluso el json proporcionado por el usuario anterior no lo hará.

pero https://your-domain/?$user=json se desinfectaría a user=json.

No elimina $ del valor de los parámetros como usted y yo esperabamos. También abrí una pregunta en github al creador y veré lo que dice. Creo que el riesgo de seguridad es tanto para la clave como para el valor. Esto no sirve de nada si no está guardando la clave en mongodb sino guardando el valor en su lugar.

Como referencia, comprueba las siguientes secciones HTTP para eliminar cualquier $ o .

['cuerpo', 'parámetros', 'encabezados', 'consulta'].forEach(función (tecla) ...

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