---
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

Даже до выполнения этой задачи новые сетевые команды желательно проектировать так, чтобы их было легко валидировать на сервере.
