В таблице лидеров игроки с 2 миллиардами кристаллов
Клиент после каждой покупки и награды отправляет на сервер итог:
POST /profile/sync
{"playerId":"p_1842","crystals":2000000000,"level":90}
Сервер сохраняет присланные значения как есть. Появились игроки с невозможными балансами — значения меняли программой для редактирования памяти и перехватом запросов. Как устроить правильно?
- Клиент шлёт действия, сервер считает баланс
- Шифровать JSON запроса секретным ключом
- Проверять на сервере, что баланс не больше 10⁹
- Хранить кристаллы в obscured-переменных
