В общем, эксперементирую щас с созданием веб мини игры и для снижения нагрузки на сервер хочу сделать, что-бы всё происходило на стороне клиента, есть объект пользователя с балансом и прочими данными и каждые условные 30 секунд на апи сервера отправляется запрос для синхронизации данных с зашифрованным ключом, который на стороне сервера расшифровывается и если ключ совпадает, то всё проходит успешно, так вот в чём вопрос, так как всё происходит на стороне клиента, то пользователь в теории может ведь в условное поле баланса добавить своё значение и при синхронизации на сервер поступит фейковый баланс, так вот, как можно реализовать безопасную синхронизацию?
szQocks, я имел ввиду, что условно говоря игрок заработал 100 монет, мне их нужно именно добавить в балансу в бд, а не минусовать, в случае с тратой монет проблем нету
ch1ps01, тебе нужно проверять заработал ли он - на уровне бэкенда, как ты будешь это делать - это уже решать тебе, из своего опыта могу лишь подсказать что подобное решается путём сравнения дат и каких-либо дополнительных данных
когда на уровне фронта отображается у тебя 100 голды якобы он заработал - это тебе всего лишь сигнал о том что можно послать запрос на бэкенд, что бы бэкенд всё там посчитал и выдал данные ( уже заработанных монет ), а не сигнал к тому что бы отправлять на бэкенд сумму которую чел заработал якобы на фронте
ch1ps01, данным, пришедшим с фронта можно доверять примерно никогда. за все расчеты должен быть ответсвеннен бэк, как ты это реализауешь, уже не совсем важно, главное, чтобы это удовлетворяло твоим потребностям.
Для тренировки рекомендую реализовать разные варианты, а потом на практике понять, где и в каком месте обшибся
самое простое в лоб
у пользователя есть 100 монет
за действие А выдается 10 монет
не важно что он там наделал у себя на клиенте
добавляешь к его 100 10, при обновлении, он получит у себя на клиенте его законные 110 монет