# Security Fixes TODO Статус исправлений критических уязвимостей из аудита безопасности. --- ## 🔴 КРИТИЧЕСКИЕ (В РАБОТЕ) ### Безопасность API - [ ] **Rate Limiting** - защита от brute force атак - [ ] Установить slowapi - [ ] Добавить rate limiting на login (5/минуту) - [ ] Добавить rate limiting на register (3/час) - [ ] Добавить rate limiting на uploads (100/час) ### Аутентификация - [ ] **Token Revocation** - logout должен удалять токен - [ ] Создать Redis client для blacklist - [ ] Добавить проверку blacklist в get_current_user - [ ] Реализовать endpoint /auth/logout - [ ] **Refresh Token Rotation** - обновление токенов - [ ] Endpoint /auth/refresh - [ ] Отзыв старого refresh token при rotation - [ ] Frontend interceptor для автообновления - [ ] **Account Lockout** - блокировка после 3 попыток на сутки - [ ] LoginAttemptTracker с Redis - [ ] Проверка блокировки перед login - [ ] Запись неудачных попыток ### Storage Management - [ ] **Storage Quota** - 3GB по пользователю - [ ] Миграция: добавить storage_quota_bytes и storage_used_bytes в User - [ ] Проверка квоты при create_upload - [ ] Увеличение used_bytes при finalize_upload - [ ] Уменьшение used_bytes при delete (S3 trash) - [ ] Endpoint GET /users/me/storage для статистики ### Валидация файлов - [ ] **Content-Type Whitelist** - только разрешенные типы - [ ] ALLOWED_IMAGE_TYPES whitelist - [ ] ALLOWED_VIDEO_TYPES whitelist - [ ] Обновить validator в schemas.py - [ ] **Magic Bytes Verification** - проверка реального типа файла - [ ] Установить python-magic - [ ] Проверка при finalize_upload - [ ] Удаление файла из S3 при несовпадении ### File Upload Security - [ ] **Streaming Chunks** - предотвратить OOM - [ ] Метод upload_fileobj_streaming в S3Client - [ ] Обновить upload_file_to_s3 для стриминга - [ ] Проверка размера ПЕРЕД чтением (макс 3GB) ### ZIP Download - [ ] **ZIP Streaming** - не держать весь архив в памяти - [ ] Создание ZIP в temp файле - [ ] FileResponse вместо возврата bytes - [ ] BackgroundTask для удаления temp файла ### Configuration - [ ] **Trash Bucket Config** - убрать hardcode - [ ] Добавить TRASH_BUCKET в config.py - [ ] Использовать из конфига в S3Client ### HTTP Security - [ ] **Security Headers** - защита от XSS, clickjacking - [ ] SecurityHeadersMiddleware - [ ] X-Frame-Options, X-Content-Type-Options - [ ] CSP, HSTS, Referrer-Policy ### Architecture - [ ] **FolderService Refactoring** - разделить обязанности - [ ] Убрать прямую работу с AssetRepository - [ ] Создать FolderManagementService для оркестрации - [ ] Использовать AssetService methods ### Search - [ ] **Asset Search** - поиск по имени файла - [ ] Метод search_assets в AssetRepository - [ ] Endpoint GET /assets/search - [ ] Поддержка ILIKE для поиска --- ## 🟡 TODO (ОТЛОЖЕНО НА ПОТОМ) - [ ] JWT Secret Validation - проверка слабого секрета в продакшене - [ ] S3 Encryption at Rest - ServerSideEncryption='AES256' - [ ] Share Token Uniqueness Check - collision detection - [ ] CSRF Protection - fastapi-csrf-protect - [ ] Strong Password Validation - complexity requirements - [ ] Database Indexes - composite indexes для производительности - [ ] Foreign Keys - relationships в models - [ ] Password Reset Flow - forgot/reset endpoints + email - [ ] EXIF Metadata Extraction - captured_at, dimensions - [ ] Database Backups - автоматизация бэкапов - [ ] Comprehensive Testing - 70%+ coverage - [ ] Monitoring & Logging - structured logging, metrics - [ ] CI/CD Pipeline - GitHub Actions --- ## 📊 Progress **Выполнено:** 14/14 критических задач ✅✅✅ **Статус:** 🎉 ВСЕ ЗАДАЧИ ЗАВЕРШЕНЫ! ### ✅ Завершено: 1. ✅ slowapi добавлен в pyproject.toml 2. ✅ Config обновлен (trash_bucket, max 3GB, default quota) 3. ✅ Redis client создан (TokenBlacklist, LoginAttemptTracker) 4. ✅ main.py: Rate limiting, Security Headers, CORS restrictive 5. ✅ User model: storage_quota_bytes, storage_used_bytes 6. ✅ Миграция 002: add_storage_quota создана 7. ✅ schemas.py: Content-Type whitelist, 3GB max, RefreshTokenRequest, StorageStatsResponse 8. ✅ dependencies.py: blacklist check в get_current_user 9. ✅ auth.py: rate limiting на endpoints, logout, refresh, account lockout, storage stats 10. ✅ S3Client: streaming upload (upload_fileobj_streaming), trash_bucket from config 11. ✅ asset_service: storage quota check, streaming (upload_fileobj_streaming), magic bytes verification, storage_used_bytes updates 12. ✅ batch_operations: ZIP streaming (temp file + FileResponse + BackgroundTasks cleanup), storage_used_bytes updates 13. ✅ FolderService: refactored (removed asset modification, only read-only validation queries) 14. ✅ AssetRepository + AssetService + API: search_assets method (ILIKE), GET /api/v1/assets/search endpoint --- **Дата начала:** 2026-01-05 **Последнее обновление:** 2026-01-05 **Финальный статус:** 🎉 14/14 COMPLETED