NoSQL injection — Что это такое? Как научиться?

Статус
В этой теме нельзя размещать новые ответы.

Node

HTM.
Модератор

Node

HTM.
Модератор
Статус
Offline
Регистрация
20 Мар 2021
Сообщения
81
Лайки
377

NoSQL injection — Базы данных NoSQL обеспечивают более слабые ограничения согласованности, чем традиционные базы данных SQL. Требуя меньше реляционных ограничений и проверок согласованности, базы данных NoSQL часто обеспечивают преимущества в производительности и масштабировании. Однако эти базы данных все еще потенциально уязвимы для атак инъекций, даже если в них не используется традиционный синтаксис SQL.

Топ 10 баз данных:
image.png


NoSQL Инъекции не получили особо такой большой популярности, как те же SQL инъекции, хотя та же MongoDB входит в топ 10 баз данных, как раз таки в ней можно провернуть NoSQL Инъекцию.

Отличия SQL и NoSQL баз данных:

В реляционных базах данных таких как MySQL, MariaBD и др. вся информация в них состоит из таблиц и столбцов. То есть таблицы и столбцы уже заранее прописаны в базе данных, их названия, тип данных, который они будут хранить, все прописано уже заранее, чтобы получить информацию из реляционных баз данных используется язык SQL, неправильное использование которого и становится причиной появления SQL-инъекций.

В нереляционных базах данных MongoDB, Redis и др информация хранится по-другому. Благодаря иному хранению данных, использование этих БД позволяет улучшить: производительность, масштабируемость и удобство в работе.


Возникновение NoSQL Инъекции:

Причина возникновения NoSQL-injection, аналогична причине возникновения SQL-injection, плохая фильтрация входных данных. MongoDB является одной из популярнейших баз на ЯП NodeJS, многие курсы, ютуберы советуют именно это базу, а это огромная ошибка, т.к. в ней легко провернуть NoSQL Инъекцию, поэтому многие люди начинают использовать эту базу данных, не подозревая о ее уязвимостях.

Суть NoSQL Инъекции:

Как же все таки работает NoSQL Инъекция? В MongoDB передается JSON-объект в функцию поиска, сам объект и является критерием поиска в базе данных, подобно SQL-injection, где используются специальные символы для раннего закрытия команды, передаваемой к базе, то есть преобразования критерия поиска, мы также преобразуем JSON-объект, передаваемый к базе данных.

Как же научиться делать NoSQL Инъекцию?

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

Литература:

1. Для просмотра ссылки Войди или Зарегистрируйся | Здесь вы можете посмотреть топ баз данных, которые используются в реальных проектах.
2. Для просмотра ссылки Войди или Зарегистрируйся | Здесь показана работа самой базы данной MongoDB, вам стоит изучить эту информацию, если вы хотите проводить инъекцию именно в ней. Аналогично вам нужно будет сделать с любой другой базой данных.

3. Для просмотра ссылки Войди или Зарегистрируйся | Объяснение и пример самой работы NoSQL Инъекции.
 

strakki6

Новорег

strakki6

Новорег
Статус
Offline
Регистрация
27 Июл 2022
Сообщения
1
Лайки
1
О блин спасибо тебе бро за третью ссылку, я очень долго искал подобную инфу(нигде найти не мог)
 

arbuz3r

Местный
Местный

arbuz3r

Местный
Местный
Статус
Offline
Регистрация
13 Дек 2021
Сообщения
126
Лайки
102
А от инъекций можно как-то защитить БД? Или надо выбирать правильные БД?)
 
Node
Node
arbuz3r
arbuz3r
до меня только дошло, что можно не мучаться с всякими обходными путями, а просто под нужные таблицы сделать процедуры/функции. Конечно, это не практично, если таблицы будут менять часто (хотя хз, кто таким будет заниматься), но зато никакая инъекция не пройдет:)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху