Как избежать Mon go DB No SQL слепой (спящий) укол - PullRequest
1 голос
/ 17 января 2020

При сканировании моего приложения на предмет уязвимости я получил одну ошибку высокого риска, т.е.

Blind MongoDB No SQL Injection

Я проверил, что именно является запросом отправлено в базу данных с помощью инструмента, который выполнил сканирование и обнаружил, что при запросе вызова GET он добавил строку ниже к запросу GET.

{"$ where": "sleep (181000); return 1;"}

Сканирование получило ответ " Time Out ", который указывает, что введенная команда " Sleep " выполнена успешно.

Мне нужна помощь для исправить эту уязвимость. Может кто-нибудь помочь мне здесь? Я просто хотел понять, что мне нужно добавить в мой код для выполнения этой проверки перед подключением к базе данных?

Спасибо, Аньшу

1 Ответ

1 голос
/ 17 января 2020

Подобно SQL инъекции или любому другому типу внедрения кода, не копируйте ненадежное содержимое в строку, которая будет выполняться как запрос MongoDB.

У вас, очевидно, есть некоторый код в вашем приложении который наивно принимает пользовательский ввод или какой-либо другой контент и запускает его как запрос MongoDB.

Извините, трудно дать более конкретный c ответ, потому что вы не показали этот код или не описали, что вы намеревались сделать.

Но, как правило, в любом месте, где вы используете внешний контент, вы должны представить, как его можно использовать не по назначению, если контент не содержит формат, который вы предполагаете.

Вместо этого вы должны проверьте содержимое, чтобы оно могло быть только в том формате, который вы намеревались, или отклоните содержимое, если оно не в допустимом формате.

...