Как избежать инъекций в приложении

Python Middle Без компании
Как избежать инъекций в приложении
Ответы
Для предотвращения SQL-инъекций используйте параметризованные запросы или ORM (например, SQLAlchemy, Django ORM). Никогда не вставляйте пользовательский ввод напрямую в SQL-запрос. **Пример с параметризованным запросом (SQLite):** ``` import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() # Плохо (уязвимо к инъекциям) user_input = "admin'; DROP TABLE users;--" cursor.execute(f"SELECT * FROM users WHERE username = '{user_input}'") # Опасность! # Хорошо (безопасно) cursor.execute("SELECT * FROM users WHERE username = ?", (user_input,)) ``` Для веб-приложений: - Экранируйте HTML/JS (используйте `html.escape` или шаблонизаторы, например Jinja2 с автоэкранированием). - Валидируйте и санируйте ввод (библиотеки `bleach`, `WTForms`). - Используйте подготовленные запросы для БД. **Пример экранирования HTML:** ``` import html user_input = "<script>alert('xss')</script>" safe_output = html.escape(user_input) # Превратится в &lt;script&gt;... ```