Как защититься от SQL-инъекций

Python Middle Без компании
Как защититься от SQL-инъекций
Ответы
Используйте параметризованные запросы (prepared statements) вместо конкатенации строк. Это самый надежный способ, так как данные передаются отдельно от SQL-кода. Пример с SQLite: ``` 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,)) ``` Для других СУБД: - PostgreSQL: `%s` или `%(name)s` - MySQL: `%s` - SQL Server: `?` или `@param` Дополнительные меры: - Валидация ввода - Использование ORM (SQLAlchemy, Django ORM) - Ограничение прав доступа БД - Экранирование спецсимволов (но это менее надежно)