SQL-инъекция - это атака, при которой злоумышленник вводит в обычное поле на сайте (поиск, логин, фильтр каталога) не текст, а команду для базы данных. Если код сайта передаёт введённое в базу без проверки, база выполняет чужую команду: отдаёт список клиентов с телефонами, пароли, заказы - или удаляет всё разом. Это одна из старейших и до сих пор самых результативных атак: от неё не спасают ни антивирус, ни сложные пароли - только правильно написанный код.

Аналогия. Представьте бланк заявления, где в пустую строку вписывают фамилию. SQL-инъекция - это когда вместо фамилии вписывают «и выдайте мне ключи от архива», а исполнитель читает бланк как единую инструкцию и послушно выдаёт ключи. Уязвимый сайт именно так и читает: не отличает данные от команд.

Как работает SQL-инъекция на живом сайте

Почти каждая страница сайта - это запросы к базе данных: покажи товары дешевле 100 рублей, найди пользователя с таким логином и паролем. Параметры для запросов приходят от посетителя - из форм, адресной строки, фильтров. Уязвимость возникает, когда программист вставляет эти параметры в запрос как есть, без экранирования. Тогда специально составленная строка «ломает» синтаксис запроса и дописывает к нему свою часть: обойти проверку пароля, вытащить соседнюю таблицу, записать в базу вредоносный код.

Ищут такие дыры не вручную: боты круглосуточно прогоняют по всем сайтам подряд типовые пробы и помечают уязвимые. Дальше - дело техники: автоматика выкачивает базу за минуты. Поэтому «мы маленькие, кому мы нужны» не работает - сканерам всё равно, чей сайт. Средний коммерческий сайт ловит первые пробы инъекций уже в первые недели после запуска: это фоновый шум интернета, а не чья-то месть.

Чем SQL-инъекция грозит бизнесу

  • Утечка базы клиентов - имена, телефоны, адреса, история заказов уходят конкурентам или в открытую продажу
  • Ответственность за персональные данные - в Беларуси утечка ПД - это проверки и штрафы по закону 99-З, плюс обязанность уведомить оператора
  • Угон админки - хэши паролей из базы перебираются на мощном железе, дальше злоумышленник входит как администратор
  • Заражение сайта - через запись в базу подсаживают редиректы и скрипты, сайт попадает в чёрные списки поисковиков
  • Потеря данных - в худшем сценарии базу просто удаляют или шифруют с требованием выкупа
Важно. Утечку через SQL-инъекцию часто замечают спустя месяцы: сайт работает как обычно, ничего не ломается. Первые сигналы приходят снаружи - клиенты жалуются на спам-звонки после заказа, база «всплывает» в сети. Если такое началось, проверьте сайт по нашему плану что делать при взломе - и в первую очередь ищите дыру в коде.

Как защититься от SQL-инъекций: три уровня

  1. Правильный кодЕдинственная настоящая защита: параметризованные запросы и экранирование всего, что приходит от пользователя. В Битрикс это API платформы (ORM, D7) вместо «сырых» SQL-запросов - штатные методы экранируют параметры сами.
  2. Проактивный фильтрВстроенный в Битрикс WAF перехватывает типовые инъекции до исполнения. Это страховочная сетка: она ловит массовые атаки, но не заменяет исправление уязвимого кода.
  3. Минимизация ущербаПользователь базы данных сайта не должен иметь прав администратора СУБД, бэкапы - ежедневные и хранятся отдельно от сервера. Тогда даже успешная атака не станет катастрофой. И проверьте, что бэкапы реально разворачиваются: копия, которую никто не пробовал восстановить, - это надежда, а не резерв.

Проверим ваш сайт на SQL-инъекции

Проведём аудит кода и форм, найдём уязвимые места и перепишем опасные запросы на безопасное API. Особенно актуально для самописных модулей и старых доработок.

Заказать аудит кода

Как понять, что сайт уже пробуют на SQL-инъекции

Откройте журнал вторжений в проактивной защите Битрикс: попытки инъекций там помечаются отдельным типом события, с адресом источника и телом запроса. Те же следы видны в логах веб-сервера - однотипные запросы со странными «ломаными» параметрами. Признаки того, что атака могла удаться: ошибки базы данных на страницах, где их раньше не было, замедление сайта при обычном трафике, незнакомые администраторы в списке пользователей и клиенты, жалующиеся на спам-звонки после заказа именно у вас.

Откуда берутся уязвимости на сайтах с Битрикс

Ядро Битрикс защищено неплохо: параметризованные запросы, проактивный фильтр, регулярные обновления безопасности. Дыры почти всегда живут в другом месте: самописные компоненты «от прошлого подрядчика», интеграции, написанные в спешке, старые модули с маркетплейса, которые никто не обновлял годами, и прямые SQL-запросы в шаблонах. Чем больше на сайте нештатного кода, тем нужнее аудит: уязвимость в одной забытой форме обесценивает всю защиту платформы. Хороший маркер риска - возраст кода: если доработки писались много лет назад и с тех пор не проходили ревизию, аудит почти наверняка найдёт что чинить.

Безопасность сайта равна безопасности худшего куска кода на нём. Можно включить все фильтры и поставить сложные пароли, но одна самописная форма с сырым запросом к базе открывает злоумышленнику дверь мимо всей обороны.Команда Alavir

Частые вопросы о SQL-инъекциях

Как проверить сайт на SQL-инъекции без программиста?
Косвенно: включите проактивный фильтр Битрикс и посмотрите журнал вторжений - попытки инъекций там помечаются. Полноценно - только аудитом кода или тестом на проникновение: автоматические онлайн-сканеры находят лишь самые грубые дыры и дают ложное чувство безопасности.
Защищает ли Битрикс от SQL-инъекций из коробки?
Ядро и штатные компоненты - да, при условии актуальных обновлений. Риск концентрируется в кастомном коде: самописные компоненты, интеграции, доработки в обход API платформы. Их безопасность зависит от квалификации того, кто писал.
У нас утекла база клиентов. Что делать по закону?
В Беларуси при утечке персональных данных нужно уведомить Национальный центр защиты персональных данных и устранить причину. Параллельно - технический разбор: найти и закрыть уязвимость, сменить пароли, зафиксировать факты. Чем быстрее и прозрачнее реакция, тем меньше последствия.
Сколько стоит аудит сайта на уязвимости в Беларуси?
Аудит кода типового корпоративного сайта или магазина - ориентировочно от 300-600 BYN в зависимости от объёма самописного кода. Точечная проверка конкретной формы или модуля дешевле. Смету называем после экспресс-осмотра - он бесплатный.

SQL-инъекция - атака на качество кода, поэтому и защита - это качество кода. Если на сайте есть самописные модули, старые доработки или формы, написанные неизвестно кем, закажите аудит: в рамках доработки сайтов Alavir находит и переписывает уязвимые места, а абонентская поддержка держит платформу обновлённой и фильтры включёнными. С 2013 года, 450+ проектов, официальный партнёр 1С-Битрикс.