MongoDB инъекция - PullRequest
       11

MongoDB инъекция

12 голосов
/ 12 ноября 2010

Есть ли в Java общий шаблон, позволяющий избежать атак с использованием инъекций mongoDB?

Спасибо

Ответы [ 4 ]

17 голосов
/ 12 ноября 2010

Используйте один из поддерживаемых драйверов. Не десериализуйте строки как JSON и не передавайте их как запросы, например, не делайте этого (в 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.

5 голосов
/ 14 ноября 2010

Вы можете создавать запросы MongoDB с помощью Javascript в предложении where, и здесь может произойти внедрение. Вот объяснение, как этого избежать: https://docs.mongodb.com/manual/faq/fundamentals/#how-does-mongodb-address-sql-or-query-injection

1 голос
/ 13 июля 2012

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

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

1 голос
/ 12 ноября 2010

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

...