Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

144
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda