MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Quão perigosa é uma consulta mongo que é alimentada diretamente de uma string de consulta de URL?


No que diz respeito à injeção ser um problema, como no SQL, o risco é significativamente menor... embora teoricamente possível através de um vetor de ataque desconhecido.

As estruturas de dados e o protocolo são binários e orientados por API, em vez de aproveitar os valores de escape em uma linguagem específica do domínio. Basicamente, você não pode simplesmente enganar o analisador para adicionar um ";db.dropCollection()" no final.

Se for usado apenas para consultas, provavelmente está tudo bem ... mas ainda assim aconselho você a usar um pouco de validação:
  • Garanta apenas caracteres alfanuméricos (filtre ou invalide nulos e qualquer outra coisa que você normalmente não aceitaria)
  • Aplique um comprimento máximo (como 255 caracteres) por termo
  • Aplicar um comprimento máximo de toda a consulta
  • Tira especial nomes de parâmetros começando com "$", como "$where" &tal
  • Não permitir arrays/documentos/hashes aninhados... apenas strings e ints

Além disso, lembre-se de que uma consulta vazia retorna tudo. Você pode querer um limite nesse valor de retorno. :)