SQL-инъекция

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

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

Суть

Например, есть скрипт по URL «www.domain.domain-zon/index.php?id=x». Вместо x должно подставляться целое число. В коде (скрипте) веб-приложения при обращении к БД пишется такой популярный запрос:

$query = "SELECT * FROM users WHERE id=" . $_REQUEST["id"];

id получается от клиента и сразу подставляется в SQL запрос. То есть конструируется SQL-выражение из пользовательского ввода путем простой конкантенации. Такой подход к написанию кода давно не используется, ведь вместо числа злоумышленник может отправить на сервер SQL-код. В случае успеха атакующий может изменить логику выполнения SQL-запроса так, как это ему нужно.

Защита

От SQL-инъекции очень легко защититься. Надо лишь в файл скрипта (в код) прописать проверку того, что попадает в строку запроса (ввод пользователя) и всё. И эта проверка будет постоянно совершаться при показе файла «www.domain.domain-zon/index.php?id=x». Если будет в строке прописано что-то ещё помимо целого числа, то код будет останавливаться и запрос к БД проходить не будет. Также можно использовать подготовленные SQL-запросы.

Это незаконченная статья. Вы можете помочь, исправив и дополнив её.

Эта статья относится к языку SQL.Шаблон:Web Шаблон:Hack