Нашел шикарную визуализацию, которая объясняет суть и механизм работы SQL-инъекций.
SQL-инъекция — это тип атаки, при котором злоумышленник выполняет вредоносные SQL-команды, вставляя вредоносный SQL-код в поле ввода или URL-адрес приложения.
Например, представьте себе приложение, которое возвращает всю вашу информацию после входа в систему. Этот запрос может выглядеть следующим образом:
ВЫБРАТЬ * ОТ пользователей
WHERE имя пользователя = 'USER_INPUT';
Если злоумышленник отправит вредоносные входные данные, запрос может измениться на следующий:
ВЫБРАТЬ * ОТ пользователей
WHERE имя пользователя = '' ИЛИ '1'='1';
Этот запрос вернет всех пользователей, так как '1'='1' всегда будет возвращать true.
Вы можете защитить свою систему от SQL-инъекций, выполнив следующие действия:
1. Используйте подготовленные операторы или параметризованные запросы:
Пользовательский ввод не может быть выполнен, так как подготовленные операторы и параметризованные запросы обеспечивают четкое разделение между пользовательским вводом и кодом SQL.
2. Проверка и очистка входных данных:
Используйте ожидаемые форматы и ограничения для проверки вводимых пользователем данных, а также очищайте входные данные, чтобы избавиться от символов, которые могут быть интерпретированы как код SQL.
3. Следуйте принципу наименьших привилегий:
Ограничьте разрешения для учетных записей баз данных, используемых приложениями и службами, только тем, что требуется для их функциональности. Это ограничивает уязвимость системы к атакам путем внедрения SQL-кода.
4) Настройка брандмауэров веб-приложений (WAF)
Настроив WAF, можно выявлять и блокировать распространенные угрозы и атаки из трафика HTTP/S, такие как SQL-инъекции, до того, как они достигнут вашего приложения.
@NikkiSiapno
@LevelUpCoding
Используя современные фреймворки можно почти не беспокоиться насчет таких уязвимостей, в них, как правило, существует многоуровневая валидация начиная от формы до взаимодействия с базой.