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

Как SQLAlchemy защищает от SQL инъекций

SQLAlchemy автоматически экранирует параметры запросов, используя механизм параметризованных запросов. Это означает, что пользовательский ввод никогда не подставляется напрямую в SQL-строку, а передаётся отдельно как параметр.

Пример безопасного запроса:

python
from sqlalchemy import text

# Плохо (уязвимо к инъекциям)
# stmt = text(f"SELECT * FROM users WHERE name = '{user_input}'")

# Хорошо (безопасно)
stmt = text("SELECT * FROM users WHERE name = :name")
result = conn.execute(stmt, {"name": user_input})

Ключевые моменты защиты:

  1. ORM и Core API используют параметризацию по умолчанию
  2. text() конструкция тоже поддерживает параметризацию
  3. Экранируются все типы данных, включая строки, числа, даты
  4. Запрещена прямая интерполяция строк в запросы

Для полной безопасности следует всегда использовать параметризованные запросы и избегать строковой интерполяции в SQL.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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