Гайды
Безопасность веб-приложений: OWASP Top 10
Кратко по категориям 2021: контроль доступа, криптография, инъекции, SSRF, логирование и зависимости.
~12 мин чтения
Безопасность веб-приложений: OWASP Top 10
OWASP Top 10 — актуализируемый список главных веб-рисков (2021: Broken Access Control, Cryptographic Failures, Injection и др.). Гайд — ориентиры защиты на уровне дизайна и кода. Аутентификация в API — JWT и OAuth2 в FastAPI; TLS — SSL/TLS и Let's Encrypt.
1. A01:2021 — Broken Access Control
Проверяйте авторизацию на каждом эндпоинте (не только «вошёл ли пользователь»). Не полагайтесь на security through obscurity (/api/orders/123 без проверки владельца). Используйте policy/ABAC для сложных прав.
2. A02 — Cryptographic Failures
TLS в транзите, сильные алгоритмы для паролей (argon2/bcrypt), не хранить секреты в репозитории. Чувствительные данные в БД — шифрование at rest там, где требует регулятор.
3. A03 — Injection
Параметризованные запросы (ORM, prepared statements), валидация входа (Pydantic и т.д.), экранирование в шаблонах. Для NoSQL — не собирать запросы строкой из пользовательского ввода.
4. A04 — Insecure Design
Угрозы на этапе моделирования (threat modeling), лимиты бизнес-операций (антифрод), secure defaults.
5. A05 — Security Misconfiguration
Закрыть debug в проде, убрать лишние заголовки/эндпоинты, минимальные права процессов и IAM, своевременные патчи.
6. A06 — Vulnerable Components
SCA (Dependabot, Snyk), фиксация версий, мониторинг CVE.
7. A07 — Identification and Authentication Failures
MFA где нужно, защита от credential stuffing, rate limit на логин — CORS и лимиты запросов в FastAPI.
8. A08 — Software and Data Integrity Failures
Подписи CI/CD, проверка supply chain (SLSA), не подтягивать скрипты с чужих CDN без integrity.
9. A09 — Security Logging and Monitoring Failures
Централизованные логи, алерты на аномалии — см. ELK.
10. A10 — Server-Side Request Forgery (SSRF)
Не позволять пользователю задавать произвольный URL для серверного fetch без allowlist; сегментация сети.
11. Заголовки и браузерные защиты
Content-Security-Policy — начинайте с report-only режима. X-Frame-Options / frame-ancestors, Referrer-Policy, Permissions-Policy сужают поверхность. Strict-Transport-Security только после полного перевода на HTTPS.
12. Чек-лист
- Регулярный pentest или bug bounty.
- Content-Security-Policy, HttpOnly cookies где уместно.
- Обучение команды OWASP ASVS для критичных систем.
- Security.txt и канал ответственного раскрытия уязвимостей.
- Ротация секретов и least privilege для CI/deploy токенов.
Дальше: тег «Безопасность»