инъекция в MongoDB

есть ли общий шаблон в Java, чтобы избежать атак инъекций mongoDB?

спасибо

4 ответов


используйте один из поддерживаемых драйверов. Не десериализуйте строки как JSON и не передавайте их как запросы, например, dont ' do this (in Ruby):

collection.send(query_type, JSON.parse(parameters))

здесь query_type и parameters строки, исходящие из формы. Но для этого нужно быть преступно глупым.

поскольку нет языка запросов как такового, нет той же комнаты для инъекций. Отчасти причина того, что атаки SQL-инъекций возможны, заключается в том, что действие (SELECT, UPDATE, DELETE, так далее.) является частью строки запроса. MongoDB и многие другие новые базы данных не работают так, вместо этого действие является частью API. Где драйверы SQL имеют только query в некоторых случаях exec MongoDB есть find, update, insert и remove.


вы можете создавать запросы MongoDB с Javascript в предложении where и здесь может произойти инъекция. Вот объяснение, как предотвратить это:http://www.mongodb.org/display/DOCS/Do+I + Have+to + Worry + About + SQL + инъекция


большинство драйверов настроены, где вы строите запросы в качестве языкового представления документов BSON. На каких языках вы собираетесь использовать mongo?


да, есть, используя поиск регулярных выражений. Пример: Допустим, вы проверяете по имени пользователя, и вы не используете EQ op. Если я передам [a-z], например, я обойду ваше действие входа в систему :).

но в любом случае, это очень зависит от логики того, как вещи реализованы в решении.