![Основы баз данных и SQL. Введение в SQL инъекции](https://i.ytimg.com/vi/4t16wXJXM-A/hqdefault.jpg)
Содержание
- Определение - что означает SQL-инъекция?
- Введение в Microsoft Azure и Microsoft Cloud | Из этого руководства вы узнаете, что такое облачные вычисления и как Microsoft Azure может помочь вам перенести и запустить свой бизнес из облака.
- Техопедия объясняет SQL-инъекцию
Определение - что означает SQL-инъекция?
SQL-инъекция - это компьютерная атака, при которой вредоносный код внедряется в плохо спроектированное приложение и затем передается в базу данных сервера. Вредоносные данные затем генерируют результаты запросов к базе данных или действия, которые никогда не должны были выполняться.
Введение в Microsoft Azure и Microsoft Cloud | Из этого руководства вы узнаете, что такое облачные вычисления и как Microsoft Azure может помочь вам перенести и запустить свой бизнес из облака.
Техопедия объясняет SQL-инъекцию
Давайте рассмотрим пример атаки SQL-инъекцией:
Приложение, управляющее банковскими операциями, содержит меню, которые можно использовать для поиска сведений о клиенте с использованием таких точек данных, как номер социального страхования клиента. В фоновом режиме приложение вызывает запрос SQL, который выполняется в базе данных, передавая введенные значения поиска следующим образом:
ВЫБЕРИТЕ client_name, phone, address, date_of_birth WHERE social_sec_no = 23425
В этом примере сценария пользователь вводит значение 23425 в окне меню приложения, запрашивая у пользователя номер социального страхования. Затем, используя значение, предоставленное пользователем, запрос SQL выполняется в базе данных.
Пользователь со знанием SQL может понять приложение и вместо ввода единственного значения при запросе номера социального страхования введите строку «23425 или 1 = 1», которая передается в базу данных следующим образом:
ВЫБЕРИТЕ client_name, phone, address, date_of_birth WHERE social_sec_no = 23425 или 1 = 1
Предложение WHERE важно, потому что оно вводит уязвимость. В базе данных условие 1 = 1 всегда выполняется, и поскольку запрос был задан для возврата сведений о номере социального страхования клиента (23425) или WHERE 1 = 1, запрос возвратит все строки в таблице, которая не была первоначальное намерение.
Приведенный выше пример атаки с использованием SQL-инъекции прост, но он показывает, как использовать уязвимость, чтобы обмануть приложение при выполнении запроса или команды серверной базы данных.
Атаки SQL-инъекций могут быть смягчены путем обеспечения надлежащего проектирования приложений, особенно в модулях, которые требуют ввода данных пользователем для выполнения запросов или команд базы данных. В приведенном выше примере приложение можно изменить так, чтобы оно принимало только одно числовое значение.