01Безопасность
Аутентификация и rate limiting
Защита логина, реги, восстановления пароля от brute force.
Защити auth-флоу.
Атаки которые предотвращаешь
- Credential stuffing
- Brute force
- Account enumeration
- Phishing redirect
- Password reset abuse
1. Rate limiting
| Endpoint | Limit | Window |
|---|---|---|
| POST /login | 5 attempts | per IP per 15min |
| POST /signup | 3 | per IP per hour |
| POST /password-reset | 3 | per email per hour |
При превышении — 429 + Retry-After.
2. Account lockout
- 5 failed → 15 мин блок
- 10 → 1 час
- 20 → требуется email верификация
- НЕ "блокировать навсегда" — DoS
3. CAPTCHA
- НЕ на каждом логине (UX)
- После 2-3 failed — да
- На signup — да (cloudflare turnstile / hCaptcha)
4. Password requirements
- Минимум 8 символов
- Не блокируй спецсимволы
- Не требуй частую смену
- Проверяй против haveibeenpwned
5. 2FA
- TOTP минимум
- WebAuthn / passkeys — лучше
- SMS — последний выбор
6. Session management
- HttpOnly + Secure + SameSite=Strict
- Короткие access tokens (1h)
- Refresh с rotation
- Logout = invalidate server-side
7. Защита от enumeration
Плохо: "Email not found" vs "Wrong password" → enumeration Хорошо: "If account exists, email sent"
8. Monitoring
- Лог всех попыток
- Алёрт на > 100 failures за 5 мин с одного IP
- Notification юзеру при логине с нового устройства
Анти-паттерны
- ❌ Globalный rate-limit (один атакующий блокирует всех)
- ❌ Возвращать "user not found" в login
- ❌ Пароли в логах
Похожие промты
site / security
Content Security Policy и security headers
CSP, HSTS, X-Frame, Permissions-Policy — закрыть основные классы атак за один проход.
securitycspheaders
Открыть
Продвинутый30-60 мин
site / security
Управление секретами
Где хранить, как ротировать, как обнаружить утечку.
securitysecrets
Открыть
Средний30-60 мин
site / security
Дизайн 2FA
TOTP / SMS / passkey: enrollment UX, recovery codes, lost-device flow, обязательность по ролям.
security2faauth
Открыть
Продвинутый1-2 часа