Простая JavaScript игра. Как обезопасить ajax-запросы от фальсификации?
Здравствуйте, допустим есть простейшая 3-х уровневая игра на JS. У игры есть общий рейтинг "Лучшее время прохождения". Когда не авторизованный пользователь проходит 3-й уровень на сервер отправляется запрос с временем прохождения.
Соответственно, любой может посмотреть какой запрос отправляется и подставить свое время, тем самым сфальсифицировав рейтинг. Подскажите как обезопасить подобные запросы?
На ум пришло лишь одно: делать на клиенте aes-токен через какунить js-либу с меткой времени прохождения и на сервере расшифровывать и получать метку. А сам ключ по которому шифруется токен прятать где-то в недрах js чтоб его не кто не нашел. Ну по моему это слишком...
Если кто-то задастся целью - отправит поддельный запрос, ведь весь код доступен на клиенте.
Варианты:
1) Обфускация кода, где будет вычисляться что-то типа md5(время + чего-нибудь) и сверяться на сервере. Просто повышается сложность поиска алгоритма.
2) Запись и отправка на сервер игрового процесса, проверка на сервере процесса игры (зависит от игры).
Марк Иваныч: Почему же, как раз ваш вариант. Сервер выдает id, random_seed, на основе которого строится ваш случайный игровой процесс, обратно на сервер передается запись движений и кликов мыши. Сервер исходя из выданного random_seed может смоделировать процесс и проверить корректность кликов. Но часто шкурка выделки не стоит, достаточно какого-нибудь хэша или шифрования и обфускации кода.
Марк Иваныч: Можно сделать обсуфкацию, шифр или хэш и фиксацию неверных данных переданных серверу. Как только переданы неверные данные - IP в бан (или IP + user_agent). Или просто с этих IP перестать принимать "топовые" результаты.