Użyj jednego z obsługiwanych sterowników. Nie deserializuj stringów jako JSON i nie przekazuj ich jako zapytania, np. nie rób tego (w Rubim):
collection.send(query_type, JSON.parse(parameters))
gdzie query_type
i parameters
to ciągi pochodzące z formularza. Jednak musiałbyś być kryminalnie głupi, żeby to zrobić.
Ponieważ nie ma języka zapytań jako takiego, nie ma tego samego miejsca na wstrzykiwanie. Jednym z powodów, dla których możliwe są ataki typu SQL injection, jest to, że należy podjąć działanie (SELECT
, UPDATE
, DELETE
itp.) jest częścią ciągu zapytania. MongoDB i wiele innych nowszych baz danych nie działa w ten sposób, zamiast tego akcja jest częścią API. Gdzie sterowniki SQL mają tylko query
aw niektórych przypadkach exec
, MongoDB ma find
, update
, insert
i remove
.