Встречается на собеседованиях • сегодня

Как защититься от 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. Экранирование спецсимволов (но это менее надежно)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы