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