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

Consulta MongoDB $ regex e possíveis explorações


Minha intuição bem pessoal diz:Não se incomode. Mas, novamente, se você fizer isso ou mesmo precisar, aqui estão algumas sugestões de como lidar com esse requisito:
  1. Você pode definir um tempo máximo de execução de uma consulta usando maxTimeMS() .
  2. Você pode tentar limpar a entrada regex, mas duvido que existam bibliotecas por aí que o ajudariam com isso, dadas as infinitas variações de consultas complexas potencialmente de longa duração. Limitar o comprimento de uma regex também pode ajudar, mas, por outro lado, provavelmente anula o propósito de permitir que um usuário pesquise convenientemente usando filtros arbitrários.
  3. Você pode provisionar uma entrada de consulta mais estruturada que, por exemplo, permitir que um usuário insira um único texto alfanumérico que você envolveria em um regex no lado do servidor para permitir, por exemplo, consultas "começa com", "contém" ou "termina com" ou algo assim.
  4. Você poderia permitir uma única consulta paralela por usuário (sessão? ip?) apenas o que provavelmente ajudaria um pouco contra ataques DoS fatais, mas certamente não contra os distribuídos... Ou você poderia até permitir apenas uma única chamada paralela disso endpoint em todo o sistema.