Обязательно

SQL-параметры

Не вставляйте пользовательскую строку непосредственно в SQL.

Проверено Изменено

Плохо

cursor.execute("SELECT * FROM users WHERE name = '" + name + "'")

Хорошо

cursor.execute("SELECT * FROM users WHERE name = %s", (name,))

Почему это важно

Пользовательский ввод не должен менять структуру команды.

Когда применять

Пример для Python и Psycopg 3: %s — placeholder драйвера, а не строковая подстановка Python. Значения передаются отдельным аргументом. Для имён колонок и направления сортировки используйте разрешённый список; bind-параметры не заменяют SQL-идентификаторы.

Кто что делает

Человек

Определяет доступные операции и минимальные права подключения к БД.

AI-агент

Реализует серверные ограничения и проверяет запрещённый запрос наряду с разрешённым.

Контроль результата:

  • Попробуйте кавычки и SQL-фрагмент во входном значении.

Как проверить у себя

  • Попробуйте кавычки и SQL-фрагмент во входном значении.
ПервоисточникиИстория изменений на GitHub

Дата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.