Skip to main content

Як захиститися від SQL-ін'єкцій?

Захист від SQL-ін'єкцій будується на тому, щоб не дозволити користувачу напряму впливати на SQL-запит.

Основні способи

Ось основні способи:

  1. Використовувати параметризовані запити (prepared statements). Замість склеювання рядків з уведенням користувача - передавати дані як параметри. Приклад (Python + PostgreSQL):
python
cursor.execute("SELECT * FROM users WHERE login = %s", (user_input,))

Тут введення не вставляється в текст запиту, а передається безпечно. 2. Не формувати запити через конкатенацію рядків. Ніколи не робити так:

python
"SELECT * FROM users WHERE login = '" + user_input + "'"
  1. Перевіряти й обмежувати введені дані. Дозволяти лише допустимі символи, довжину й формат (наприклад, лише літери й цифри).
  2. Використовувати ORM чи фреймворки. Наприклад, SQLAlchemy, Django ORM, Hibernate - вони автоматично екранують параметри.
  3. Обмежувати права користувачів БД. Застосунок має підключатися під користувачем, у якого немає прав на видалення таблиць чи зміну схеми.
  4. Логувати й відстежувати підозрілі запити. Щоб швидко помітити спроби зламу.

Підсумок: захист від SQL-ін'єкцій - це параметри замість рядків, валідація даних і мінімальні права в облікового запису бази.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.