Что такое SQL-инъекция и зачем нужен SQL-файервол
Есть такой класс атак — SQL-инъекция. Ошибка хорошо изучена, но на эти грабли каждый раз наступают снова и снова. Вот бы кто придумал, как решить проблему раз и навсегда. Постойте, похоже решение найдено — SQL-файервол.
Как работает SQL-инъеция
Допустим, сайт содержит такой код:
$postId = $_GET['post_id'];
$query = "select title, body from posts where post_id = $postId";
Всё как бы просто: через форму передается идентификатор поста и CMS сайта вытаскивает из БД сам пост. Проблема в том, что юный каккер может подменить передаваемое значение на свое и в строку встроится произвольный код. Этот код может сделать запрос к другой таблице, например, хранящей логины и пароли и вставить туда фейкового суперпользователя. Всё — сайт взломан.
Как защититься от SQL-инъекции
Сделать это достаточно просто. Нужно вспомнить одну из заповедей безопасного программирования: не доверяй данным пользователя. Короче говоря, каждую переменную в запросе надо экранировать. Для этого давно созданы соответствующие функции в каждом языке программирования. Проблема в том, что быдлокодеры постоянно забывают экранировать пользовательский ввод. Из-за этого сайты ломают, данные воруют, наносятся многомиллионные убытки. Из-за одной дебильной ошибки и слабой памяти оператора ЭВМ.
SQL-файервол
И тут британские ученые догадались: если нельзя приучить быдлокодера проверять пользовательский ввод, то нужно поставить систему, которая будет мониторить трафик между быдлокодом и СУБД и блокировать те запросы, которые содержат инжектированный SQL-код. И всего-то! Установил файервол — надежно защитился от целого класса атак. Кто там говорил, что панацеи не бывает?
Существуют ли готовые и бесплатные решения
В том-то и дело, что да — Acra. Софт работает как прокси-сервер между SQL-клиентом и СУБД и фильтрует зловредный код. А еще умеет шифровать данные. Есть встроенная система обнаружения вторжений. Программа отлично себя зарекомендовала в тех областях, где нет права на факап: медицина, финансы, электронная коммерция. Вот ссылка на этот чудософт: Database encryption proxy for data-driven apps: strong selective encryption, SQL injections prevention, intrusion detection, honeypots.
Комментировать