Pokud jde o problém s injekcí, jako u SQL, riziko je výrazně nižší... i když teoreticky možné prostřednictvím neznámého vektoru útoku.
Datové struktury a protokol jsou binární a řízené API, spíše než aby využívaly uniklé hodnoty v rámci jazyka specifického pro doménu. V zásadě nemůžete jen oklamat analyzátor, aby na konec přidal ";db.dropCollection()".
Pokud se používá pouze pro dotazy, je to pravděpodobně v pořádku... ale přesto bych vás varoval, abyste použili malý kousek ověření:
- Zajistěte pouze alfanumerické znaky (filtrujte nebo zrušte platnost hodnot null a cokoli jiného, co byste normálně nepřijali)
- Vynutit maximální délku (např. 255 znaků) na termín
- Vynutit maximální délku celého dotazu
- Strip speciální názvy parametrů začínající na „$“, jako „$ kde“ a podobně
- Nepovolovat vnořená pole/dokumenty/hash... pouze řetězce a ints
Také mějte na paměti, že prázdný dotaz vrátí vše. Možná budete chtít limit na tuto návratovou hodnotu. :)