Встречается на собеседованиях • сегодня
Как защитить приложение от SQL-injection атаки
Используйте параметризованные запросы (prepared statements) вместо конкатенации строк. Это главный и самый надежный способ. В Python для этого используют DB-API или ORM:
python
# ПЛОХО (уязвимо к SQL-инъекциям):
cursor.execute(f"SELECT * FROM users WHERE login = '{user_input}'")
ХОРОШО (безопасно):
cursor.execute("SELECT * FROM users WHERE login = %s", (user_input,))
text
Дополнительные меры:
- Используйте ORM (SQLAlchemy, Django ORM) - они автоматически экранируют параметры
- Валидируйте пользовательский ввод
- Ограничивайте права доступа БД (не используйте root)
- Используйте хранимые процедуры с параметрами
- Применяйте whitelisting для динамических частей SQL (если параметризация невозможна)
- Регулярно обновляйте библиотеки БД
Пример с SQLAlchemy:
```python
result = session.query(User).filter(User.login == user_input).all()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы