Бортовой журнал Ктулху

Как работают SQL-инъекции и как защитить от них систему

Нашел шикарную визуализацию, которая объясняет суть и механизм работы SQL-инъекций.

SQL-инъекция — это тип атаки, при котором злоумышленник выполняет вредоносные SQL-команды, вставляя вредоносный SQL-код в поле ввода или URL-адрес приложения.

Например, представьте себе приложение, которое возвращает всю вашу информацию после входа в систему. Этот запрос может выглядеть следующим образом:

 

ezgif 1 82ce6137b0

ВЫБРАТЬ * ОТ пользователей

WHERE имя пользователя = 'USER_INPUT';

Если злоумышленник отправит вредоносные входные данные, запрос может измениться на следующий:

ВЫБРАТЬ * ОТ пользователей

WHERE имя пользователя = '' ИЛИ '1'='1';

Этот запрос вернет всех пользователей, так как '1'='1' всегда будет возвращать true.

Вы можете защитить свою систему от SQL-инъекций, выполнив следующие действия:

1. Используйте подготовленные операторы или параметризованные запросы:

Пользовательский ввод не может быть выполнен, так как подготовленные операторы и параметризованные запросы обеспечивают четкое разделение между пользовательским вводом и кодом SQL.

2. Проверка и очистка входных данных:

Используйте ожидаемые форматы и ограничения для проверки вводимых пользователем данных, а также очищайте входные данные, чтобы избавиться от символов, которые могут быть интерпретированы как код SQL.

3. Следуйте принципу наименьших привилегий:

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

4) Настройка брандмауэров веб-приложений (WAF)

Настроив WAF, можно выявлять и блокировать распространенные угрозы и атаки из трафика HTTP/S, такие как SQL-инъекции, до того, как они достигнут вашего приложения.

@NikkiSiapno

@LevelUpCoding

 Используя современные фреймворки можно почти не беспокоиться насчет таких уязвимостей, в них, как правило, существует многоуровневая валидация начиная от формы до взаимодействия с базой.