SQL-инъекция — уязвимость, при которой внешние данные становятся частью SQL-команды и меняют её смысл. В расширении Joomla такая ошибка может привести к чтению, изменению или удалению данных вне предусмотренного сценария.
Откуда возникает риск
Опасность появляется при сборке SQL из строк с непроверенными значениями. Источником могут быть параметры URL, поля формы, заголовки и ранее сохранённые данные. Проверка на стороне браузера не является границей безопасности.
Безопасные запросы в Joomla
Для значений используют подготовленные запросы и привязку параметров через API базы данных Joomla. Данные передаются отдельно от структуры запроса. Имена столбцов, направление сортировки и другие элементы синтаксиса выбирают из разрешённого списка, поскольку обычный параметр значения их не заменяет.
Проверка типа и допустимого диапазона нужна дополнительно. Универсальное удаление кавычек или HTML-фильтр не делают произвольный SQL безопасным. Учётной записи базы данных предоставляют только необходимые приложению права.
Что проверять владельцу сайта
На сайте Joomla поддерживают ядро и расширения в актуальном состоянии, удаляют ненужные компоненты и сохраняют рабочие резервные копии. При подозрении на уязвимость проверяют конкретный обработчик и журналы, не публикуя секреты и полные тексты запросов с персональными данными.
Межсетевой экран может блокировать часть подозрительных запросов, но не исправляет ошибку построения SQL в приложении.
Вывод
Основная защита от SQL-инъекции — отделение данных от команды. Привязка параметров, разрешённые значения и ограниченные права дополняют друг друга.