Какие подходы используются для защиты от инъекций
Python
Middle
Без компании
Какие подходы используются для защиты от инъекций
Ответы
В Python для защиты от инъекций (SQL, XSS, shell-инъекций) применяют:
- **Параметризованные запросы** (SQL):
```
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
```
Используйте ORM (Django ORM, SQLAlchemy) — они автоматически экранируют данные.
- **Экранирование HTML** (XSS):
```
from markupsafe import escape
escaped = escape("<script>alert('XSS')</script>")
```
В шаблонизаторах (Jinja2, Django Templates) экранирование включено по умолчанию.
- **Shell-инъекции**:
```
import subprocess
subprocess.run(["ls", "-l", user_input]) # Безопасно
```
Избегайте `shell=True` и передавайте аргументы списком.
- **Валидация и санация данных**:
Используйте библиотеки (`bleach` для HTML, `pydantic` для валидации).
- **CSP (Content Security Policy)** — защита от XSS на уровне браузера.
**Ключевое правило**: Никогда не доверяйте пользовательскому вводу!