Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як захиститися від SQL-ін'єкцій?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Захист від SQL-ін'єкцій будується на тому, щоб **не дозволити користувачу напряму впливати на SQL-запит**: використовувати параметризовані запити (prepared statements) замість склеювання рядків, перевіряти й обмежувати введені дані, застосовувати ORM чи фреймворки (SQLAlchemy, Django ORM, Hibernate), обмежувати права користувачів БД і логувати підозрілі запити. **Ключове:** ключова ідея - **параметри замість рядків**, **валідація даних** і **мінімальні права** в облікового запису бази; наприклад, `cursor.execute("SELECT * FROM users WHERE login = %s", (user_input,))` передає введення безпечно, не вставляючи його в текст запиту.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняЗахист від 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 + "'" ``` 3. **Перевіряти й обмежувати введені дані.** Дозволяти лише допустимі символи, довжину й формат (наприклад, лише літери й цифри). 4. **Використовувати ORM чи фреймворки.** Наприклад, SQLAlchemy, Django ORM, Hibernate - вони автоматично екранують параметри. 5. **Обмежувати права користувачів БД.** Застосунок має підключатися під користувачем, у якого **немає прав** на видалення таблиць чи зміну схеми. 6. **Логувати й відстежувати підозрілі запити.** Щоб швидко помітити спроби зламу. **Підсумок:** захист від SQL-ін'єкцій - це **параметри замість рядків**, **валідація даних** і **мінімальні права** в облікового запису бази.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.