Гайды

Безопасность веб-приложений: 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 токенов.

Дальше: тег «Безопасность»