инъекция в 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], например, я обойду ваше действие входа в систему :).
но в любом случае, это очень зависит от логики того, как вещи реализованы в решении.