MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Quanto è pericolosa una query mongo che viene alimentata direttamente da una stringa di query URL?

Per quanto riguarda l'iniezione di problemi, come con SQL, il rischio è significativamente inferiore... anche se teoricamente possibile tramite un vettore di attacco sconosciuto.

Le strutture dati e il protocollo sono binari e basati su API anziché sfruttare i valori di escape all'interno di un linguaggio specifico del dominio. Fondamentalmente, non puoi semplicemente indurre il parser ad aggiungere un ";db.dropCollection()" alla fine.

Se viene utilizzato solo per le query, probabilmente va bene... ma ti consiglio comunque di usare un po' di convalida:

  • Assicurati solo i caratteri alfanumerici (filtra o invalida i valori null e qualsiasi altra cosa che normalmente non accetteresti)
  • Applica una lunghezza massima (come 255 caratteri) per termine
  • Applica una lunghezza massima dell'intera query
  • Strip speciale nomi dei parametri che iniziano con "$", come "$dove" e simili
  • Non consentire array/documenti/hash nidificati... solo stringhe e int

Inoltre, tieni presente che una query vuota restituisce tutto. Potresti volere un limite su quel valore di ritorno. :)