Встречается на собеседованиях • сегодня
Как защититься от SQL-инъекций
Используйте параметризованные запросы (prepared statements) вместо конкатенации строк. Это самый надежный способ, так как данные передаются отдельно от SQL-кода.
Пример с SQLite:
python
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
Плохо (уязвимо к инъекциям):
cursor.execute(f"SELECT * FROM users WHERE username = '{username}'")
Хорошо (безопасно):
cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
text
Для других СУБД:
- PostgreSQL: `%s` или `%(name)s`
- MySQL: `%s`
- SQL Server: `?` или `@param`
Дополнительные меры:
1. Валидация ввода
2. Использование ORM (SQLAlchemy, Django ORM)
3. Ограничение прав доступа БД
4. Экранирование спецсимволов (но это менее надежно)
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы