2.4 KiB
2.4 KiB
Task 13: Политика анонимного доступа к POST /api/posts/preview
Assigned to: Antigravity (Implementation Orchestrator)
Priority: MEDIUM (security / quota protection / UX consistency)
Date: 2026-08-21
Base SHA: 76ab7d0e77d06cbc31b66fc5c0cdd80282d7f496
Проблема
Анонимный доступ к POST /api/posts/preview создает риски истощения квоты VK_SERVICE_TOKEN через пул IP-адресов либо взаимную блокировку анонимных пользователей на ключе direct-client. При этом весь визард создания розыгрыша (POST /api/giveaways и последующие шаги) жестко требует авторизации через VK ID (requireAuthenticatedUser), поэтому анонимный доступ к превью не обслуживает завершаемый пользовательский сценарий.
Scope
- Реализовать Вариант A (рекомендуемый):
- Закрыть
POST /api/posts/previewзаrequireAuthenticatedUser(req). - Анонимные запросы получают
401 Unauthorizedс внятным сообщением о необходимости войти через VK ID. - Запросы без авторизации не доходят до VK API / провайдера (защита квоты приложения).
- Лимитирование становится строго user-scoped (
generalApiRateLimiter.assertAllowed('post-preview:user:' + sessionUser.id)).
- Закрыть
- Обновить тесты:
- Создать
tests/preview-quota-policy.test.ts(проверкаrequireAuthenticatedUser, 0 вызовов VK провайдера для неавторизованных запросов, успешная работа для авторизованных пользователей). - Обновить
tests/post-preview-guard.test.ts,tests/security.test.ts,tests/rate-limit-identity.test.tsс явным объяснением перехода на обязательную аутентификацию.
- Создать
- Документировать исправление в отчете
agents/antigravity/done/TASK-2026-08-21-13-preview-anonymous-policy.md. - Полный верификационный гейт.