Що таке SQL Injection?
SQL Injection (SQL-ін'єкція) - це атака на веб-застосунок, за якої зловмисник вставляє шкідливий SQL-код у вхідні дані, щоб обдурити запит до бази даних.
Простіше кажучи: застосунок очікує звичайний ввід (логін, пароль, пошук), а отримує SQL-команду і виконує її.
Як працює SQL Injection простою мовою
Зазвичай застосунок формує SQL-запит приблизно так:
SELECT * FROM users WHERE login = 'user' AND password = 'pass';
Якщо застосунок не перевіряє ввід, зловмисник може ввести:
' OR 1=1 --
У підсумку запит перетворюється на:
SELECT * FROM users WHERE login = '' OR 1=1 --';
1=1 завжди істина, тому база даних повертає всі записи, і вхід відбувається без пароля.
Що може зробити зловмисник
За допомогою SQL Injection можна:
- обійти автентифікацію;
- прочитати дані з бази (паролі, персональні дані);
- змінити або видалити дані;
- отримати повний контроль над базою даних;
- іноді - виконати команди на сервері.
Це одна з найнебезпечніших L7-атак.
Де виникає SQL Injection
- форми логіну;
- форми пошуку;
- URL-параметри;
- API-запити;
- будь-які місця, де користувацький ввід потрапляє в SQL-запит.
Які властивості безпеки порушуються
- Confidentiality - витік даних;
- Integrity - підміна або видалення даних;
- іноді Availability - видалення таблиць або БД.
Види SQL Injection (коротко)
- Classic SQLi - результат одразу видно;
- Blind SQLi - результат визначається опосередковано (true/false, затримки);
- Union-based SQLi - об'єднання запитів (
UNION); - Error-based SQLi - використання помилок БД.
Чому SQL Injection досі існує
- відсутність перевірки вхідних даних;
- динамічне формування SQL-запитів;
- застарілий чи небезпечний код;
- відсутність безпечних практик розробки.
Як захищаються від SQL Injection
Основні заходи захисту:
- prepared statements / parameterized queries (головне);
- валідація і фільтрація вхідних даних;
- мінімальні права у користувача БД;
- WAF;
- оновлення застосунків і фреймворків.
Ніколи не підставляти користувацький ввід напряму в SQL-запит.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.