Безопасный backend для мобильной игры
Клиент игры нельзя считать надёжным источником данных. Прогресс, награды и важные действия лучше проверять на сервере.
Почему клиенту нельзя доверять
Мобильное приложение находится у игрока. Его можно изменить, исследовать или использовать для отправки поддельных запросов. Поэтому сервер не должен принимать слово клиента о том, что игрок честно прошёл уровень или получил награду.
Например, если клиент сам сообщает: «игрок победил и получил 100 монет», злоумышленник может отправить такое же сообщение вручную. Сервер должен сам проверить, возможно ли это событие в текущем состоянии игры.
Авторизация игрока
Первый слой защиты — понимание того, кто именно отправляет запрос. Для этого используется регистрация, вход и токены доступа.
После успешного входа сервер выдаёт короткоживущий JWT-токен. Клиент передаёт его при запросах к защищённым методам API, а сервер проверяет токен перед выполнением действия.
Валидация игровых событий
Сервер должен проверять не только токен, но и само событие. Важно убедиться, что действие возможно: уровень пройден, награда доступна, ресурс не был получен ранее, а данные соответствуют правилам игры.
Например, запрос на завершение уровня должен содержать идентификатор уровня и быть проверен на сервере. Сервер решает, пройден ли уровень, какая награда положена и можно ли её начислить.
Хранение прогресса
Прогресс игрока лучше хранить на сервере: уровень, ресурсы, достижения, покупки и важные игровые состояния. Локальное сохранение может быть дополнительным удобством, но не единственным источником правды.
Так игрок сможет продолжить с другого устройства, а разработчик — защитить важные данные от подмены.
Простой принцип
Клиент показывает игру и отправляет действия. Сервер проверяет правила, принимает решение и сохраняет результат. Это базовый принцип безопасного backend для мобильной игры.
Мои backend-сервисы
- Game API Platform — API для мобильных игр, прогресс и валидация событий.
- Secure Auth Service — авторизация, JWT-токены и refresh-сессии.