Files

114 lines
4.5 KiB
Markdown

---
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/Features/VoxelWorld/Scenes/VoxelWorldTestScene.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
Даже до выполнения этой задачи новые сетевые команды желательно проектировать так, чтобы их было легко валидировать на сервере.