--- id: TASK-0020 title: Добавить серверные ограничения и валидации против читов summary: Реализовать BackLog-задачу на server-side validation сетевых команд, защиту от некорректных клиентских состояний и базовые античит-ограничения для MVP. priority: High area: security owner: unassigned created: 2026-03-30 updated: 2026-03-30 execution_time: 1d depends_on: - TASK-0002 - TASK-0008 - TASK-0009 - TASK-0010 canonical_docs: - docs/tasks/Index.md related_files: - Assets/Scenes/SampleScene.unity --- # TASK-0020 - Добавить серверные ограничения и валидации против читов ## Status Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там. Допустимые значения статуса: - `BackLog` - `ToDo` - `InProgress` - `Review` - `Done` ## Why Даже для MVP нельзя полностью доверять клиенту в вопросах перемещения, инвентаря, применения оружия и навыков. Базовые валидации должны существовать на сервере. ## Expected Outcome Сервер проверяет основные клиентские команды и не принимает некорректные действия: невозможное перемещение, запрещенное использование предметов, недопустимую установку книг, фальшивые попадания и другие очевидные нарушения. ## Current Context На раннем этапе достаточно базовых ограничений. Полноценный античит не нужен для первого MVP, поэтому задача в `BackLog`. ## Source Of Truth - `docs/tasks/items/TASK-0002.md` - `docs/tasks/items/TASK-0008.md` - `docs/tasks/items/TASK-0009.md` - `docs/tasks/items/TASK-0010.md` ## Read First - `docs/tasks/items/TASK-0002.md` - `docs/tasks/items/TASK-0008.md` - `docs/tasks/items/TASK-0009.md` - `docs/tasks/items/TASK-0010.md` ## Scope In - validation для movement и interaction commands - validation для inventory/equipment изменений - validation для использования оружия и навыков - базовые rate limits и sanity checks ## Scope Out - полноценная внешняя античит-служба - поведенческий анализ и ban pipeline ## Constraints - сервер остается источником истины для state transitions - проверки должны быть дешевыми и не ломать игровой loop MVP ## If You Find Drift - если новые команды добавляются без server-side validation, это drift ## Suggested Approach 1. Перечислить критичные клиентские команды по подсистемам. 2. Добавить server-side guards и rejection rules. 3. Подготовить базовое логирование отказов и подозрительных случаев. ## Acceptance Criteria - сервер отклоняет очевидно неверные клиентские действия - inventory, weapon и skill команды валидируются по server state - система не позволяет клиенту самовольно изменять критичные runtime states ## Verification - ручная проверка некорректных сценариев через debug commands или подмену входных данных ## Risks / Open Questions - нужно определить минимальный набор проверок, который даст наибольшую ценность без сильного замедления разработки MVP ## Human Decisions Needed - none currently ## Decision Log - `2026-03-30` - задача добавлена в `BackLog` по явному запросу пользователя. ## Handoff Notes Даже до выполнения этой задачи новые сетевые команды желательно проектировать так, чтобы их было легко валидировать на сервере.