graph LR
A[Login] --> B[Access Token JWT 15min]
A --> C[Refresh Token SHA-256 в DB]
C --> D[HttpOnly Cookie SameSite=Strict]
B --> E[Bearer Authorization Header]
D --> F[/auth/refresh → rotation]
F --> G[Token reuse → RevokeAll]
| Область | Решение | Документ |
|---|---|---|
| Refresh token storage | SHA-256 хеш в PostgreSQL + ротация | [[backend-auth-security]] |
| Concurrent refresh | DeleteIfExists + проверка rows_affected |
[[atomic-refresh-token-race-condition]] |
| CSRF | SameSite=Strict для refresh cookie |
[[atomic-csrf-protection]] |
| Rate limiting | Redis + in-memory fallback, per-IP / per-UserID | [[backend-rate-limiting]] |
| Fail-open vs Fail-closed | Зависит от AppEnv |
[[atomic-redis-rate-limiter-failopen-failclosed]] |
| WebSocket | per-connection rate limiter, глобальный лимит 1000 | [[atomic-websocket-origin-check]] |
| Error exposure | Скрытие деталей в production (500 + validation) | [[decision-validation-error-production]] |
| CSP | Content-Security-Policy через Caddy | [[atomic-csp-hardening]] |
| TOCTOU race (anti-pattern) | Race при регистрации | [[atomic-toctou-race-registration]] |
| Package-level state (anti-pattern) | var AppEnv глобальная |
[[atomic-global-appenv-package-var]] |
AllowedOrigins, валидация при старте (config.go:106)unsafe-inline — нужно hardening ([[atomic-csp-hardening]])_FILE suffix для Docker secrets, panic если в production = dev-secrethttp.MaxBytesReader (1 MB лимит) на всех JSON-инпутахdeleted_at| Проблема | Файл | Риск |
|---|---|---|
var AppEnv string — глобальная mutable-переменная |
handlers/errors.go:13 |
Нет тестов, race при параллельных запросах |
| TOCTOU race в Register | services/auth.go:85-86 |
Дубликат email при одновременной регистрации |
Ошибка GetByEmail подавлена через _ |
services/auth.go:85 |
При недоступности БД — "email exists" вместо 500 |
CSP с unsafe-inline + unsafe-eval |
Caddyfile:40 |
XSS-защита ослаблена |
dev-secret в .env.example)any/interface{} в публичных API? (✓ в writeJSON(v interface{}) — допустимо, транспорт)var AppEnv, TOCTOU в Register)#security #MOC #backend #auth #production #anti-pattern