Як захиститися від SQL-ін'єкцій?
Захист від SQL-ін'єкцій будується на тому, щоб не дозволити користувачу напряму впливати на SQL-запит.
Основні способи
Ось основні способи:
- Використовувати параметризовані запити (prepared statements). Замість склеювання рядків з уведенням користувача - передавати дані як параметри. Приклад (Python + PostgreSQL):
python
cursor.execute("SELECT * FROM users WHERE login = %s", (user_input,))Тут введення не вставляється в текст запиту, а передається безпечно. 2. Не формувати запити через конкатенацію рядків. Ніколи не робити так:
python
"SELECT * FROM users WHERE login = '" + user_input + "'"- Перевіряти й обмежувати введені дані. Дозволяти лише допустимі символи, довжину й формат (наприклад, лише літери й цифри).
- Використовувати ORM чи фреймворки. Наприклад, SQLAlchemy, Django ORM, Hibernate - вони автоматично екранують параметри.
- Обмежувати права користувачів БД. Застосунок має підключатися під користувачем, у якого немає прав на видалення таблиць чи зміну схеми.
- Логувати й відстежувати підозрілі запити. Щоб швидко помітити спроби зламу.
Підсумок: захист від SQL-ін'єкцій - це параметри замість рядків, валідація даних і мінімальні права в облікового запису бази.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.