O ile wstrzykiwanie stanowi problem, podobnie jak w przypadku SQL, ryzyko jest znacznie niższe... aczkolwiek teoretycznie możliwe dzięki nieznanemu wektorowi ataku.
Struktury danych i protokół są binarne i oparte na interfejsie API, a nie wykorzystują wartości ucieczki w języku specyficznym dla domeny. Zasadniczo nie można po prostu oszukać parsera, aby dodał na końcu ";db.dropCollection()".
Jeśli jest używany tylko do zapytań, prawdopodobnie jest w porządku ... ale nadal ostrzegam, aby użyć odrobiny walidacji:
- Zapewnij tylko znaki alfanumeryczne (filtruj lub unieważniaj wartości null i wszystko, czego normalnie byś nie zaakceptował)
- Wymuszaj maksymalną długość (np. 255 znaków) na termin
- Wymuszaj maksymalną długość całego zapytania
- Pasek specjalny nazwy parametrów zaczynające się od "$", takie jak "$where" i takie
- Nie zezwalaj na zagnieżdżone tablice/dokumenty/hasze... tylko łańcuchy i dane
Pamiętaj też, że puste zapytanie zwraca wszystko. Możesz chcieć ograniczyć tę zwracaną wartość. :)