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

Как проверить код на наличие SQL инъекции

Для проверки кода на SQL-инъекции в Python:

  1. Используйте параметризованные запросы вместо конкатенации строк. Пример уязвимого кода:
python
query = f"SELECT * FROM users WHERE username = '{username}'"  # Опасный вариант
cursor.execute(query)

Безопасный вариант с параметрами:

python
query = "SELECT * FROM users WHERE username = %s"
cursor.execute(query, (username,))
  1. Проверьте ORM-запросы (если используется SQLAlchemy, Django ORM) - они обычно защищены, но иногда встречаются raw() или extra() с уязвимостями.

  2. Анализируйте динамическое построение запросов - любые случаи, где SQL формируется через форматирование строк (f"", .format(), %s).

  3. Используйте статические анализаторы:

  • Bandit (pip install bandit)
  • SQLmap для тестирования готовых приложений
  1. Проверьте права доступа БД - даже при инъекции ограниченные права уменьшат ущерб.

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

python
result = session.query(User).filter(User.username == username).all()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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