Use um dos drivers suportados. Não desserialize strings como JSON e passe-as como consultas, por exemplo. não' faça isso (em Ruby):
collection.send(query_type, JSON.parse(parameters))
onde
query_type
e parameters
são strings provenientes de um formulário. Você teria que ser criminalmente estúpido para fazer isso. Como não há linguagem de consulta como tal, não há o mesmo espaço para injeção. Parte da razão pela qual os ataques de injeção de SQL são possíveis é que a ação a ser tomada (
SELECT
, UPDATE
, DELETE
, etc.) faz parte da string de consulta. O MongoDB e muitos outros bancos de dados mais recentes não funcionam assim, em vez disso, a ação faz parte da API. Onde os drivers SQL têm apenas query
e em alguns casos exec
, o MongoDB tem find
, update
, insert
e remove
.