Может быть, вы можете сохранить «статус» меню в файле cookie или в сеансе, например, в виде снимка, и прочитать его при загрузке страницы.
В конце дня Вы полагаетесь на доверие клиенту. Если клиент отправляет воспроизведения на сервер, это достаточно легко к воспроизводимому, или измените успешный playthrough и отправьте это на сервер.
Ваш лучший выбор состоит в том, чтобы поднять планку для обмана выше того, что плеер считал бы стоящим преодоления. Чтобы сделать это, существуют много доказанные (но часто не упомянуты) методы, которые можно использовать:
Никакое решение никогда не будет прекрасным, в то время как игра работает на системе под управлением пользователя, но существует несколько шагов, которые Вы могли сделать для создания взламывания системы большей проблемой. В конце цель может только состоять в том, чтобы сделать взламывание системы большей проблемой, чем это стоит.
, В целом, хотя, заставляя игру, достаточно популярную для людей хотеть взломать его, вероятно, далекая более сложная задача.
Я честно не думаю, что это возможно.
я сделал его перед использованием довольно простого ключевого шифрования со сжатым двоичным файлом, который работал достаточно хорошо на безопасность, которой я потребовал, но я честно думаю, полагает ли кто-то, что взламывание Вашего высокого счета онлайн представляет взлом в виде таблицы, это будет сделано.
существуют некоторые довольно грустные люди там, которые также, оказывается, довольно ярки, если Вы не можете получить их всех, положил, это - проигранное дело.
Если Вашей игре встроили систему воспроизведения, можно отправить воспроизведения серверу и иметь сервер, вычисляют счет от воспроизведения.
Этот метод не прекрасен, можно все еще обмануть путем замедления игры (если это основано на действии), или путем записи бота.
Я делал часть этого с моими флеш-играми, и это - проигрывающее сражение действительно. Специально для ActionScript, который может декомпилироваться в несколько читаемый код без слишком большого усилия.
способом, которым я делал его, является довольно стандартный подход отправки счета и названия плеера в простом тексте и затем хеше двух (правильно посоливший). Очень немного людей определяются достаточно для приложения усилий для понимания этого и некоторых, кто, сделал бы это так или иначе, инвертирование все время Вас поместило в него.
подводя итоги, моя философия должна провести время при создании игры лучше и просто затруднять достаточно для обмана.
Одна вещь, которая могла бы быть довольно эффективной, состоит в том, чтобы иметь игру, отправляют счет серверу несколько раз, поскольку Вы играете, отправляя небольшому количеству информации о геймплее каждый раз, позволяя Вам проверить, если счет "реалистичен". Но это могло бы быть немного чрезмерно действительно.
Это - действительно трудный вопрос.
я никогда не реализовывал такую вещь, но вот простой aproximmation.
Ваше основное беспокойство происходит из-за хакеров, предполагающих, что является им, Ваше приложение делает и затем отправляет их собственные результаты.
ну, в первую очередь, если Ваше приложение не имеет большой успех, я не был бы взволнован. Выполнение такой вещи является чрезвычайно трудным.
Шифрование не поможет с проблемой. Вы видите, шифрование помогает защитить продвигающиеся данные, но это не защищает ни одну из сторон транзакции, прежде чем данные будут зашифрованы (который является, где основная уязвимость может быть). Таким образом, при шифровании верного данные останутся частными, но это не будет безопасно.
, Если Вы действительно волнуетесь по поводу этого, что я предложу запутать код и разработать систему счета способом, которая не абсолютно очевидна, что делает. Здесь мы можем заимствовать некоторые вещи из протокола шифрования. Вот пример:
, Поскольку Вы видите, что это - просто путаница другого вида. Можно спуститься по тому пути, пока Вы хотите. Например, Вы можете поиск самые близкие два простых числа к X и использовать их, чтобы зашифровать CRC и отправить его также на сервер, таким образом, у Вас будут CRC и счет отдельно и с различными схемами шифрования.
, Если бы Вы используете это в сочетании с путаницей, я сказал бы, что это было бы трудно взломать. Nontheless даже, который мог быть обратным engingeered, все это зависит от интереса и способности хакера, но... серьезно, какое пятно прилагает такие усилия для изменения его результатов на игре? (Если не WoW или что-то)
Одно последнее примечание
Как в другом ответе говорится, Вы вынуждены доверять потенциально злонамеренному клиенту, и простой deterant плюс немного человеческого контроля будет достаточно для маленькой игры.
, Если Вы хотите стать необычными, тогда необходимо искать шаблоны мошенничества в данных счета, средстве моделирования к компании по выпуску кредитных карт, смотрящей на данные заряда. Более состояния, которое клиент передает на Ваш сервер, потенциально легче, он должен найти шаблон корректного или неправильного поведения через код. Например. скажите, что клиент должен был загрузить основанный на времени контрольный журнал счета (который, возможно, можно также использовать, чтобы позволить другому клиенты смотреть лучшие игры), сервер может тогда проверить, если журнал счета нарушает какое-либо из игровых правил.
В конце, это все еще о создании его достаточно дорого для воспрепятствования обмана табло. Вы хотели бы систему, где можно всегда улучшаться (легче обновить) серверный код для контакта с любыми новыми нападениями на систему проверки.
@Martin.
Это - то, как я верю работам Mario Kart Wii. Добавленная премия - то, что можно позволить всем другим плеерам смотреть, как высокий держатель счета получил высокий счет. Забавная вещь об этом состоит в том, что при проверке самого быстрого" Вулкан Ворчания " след времени Вы будете видеть, что кто-то нашел ярлык, которые позволяют Вам пропустить 95% дорожки. Я не уверен, есть ли у них все еще это как самое быстрое время.
Вы не можете сделать этого на недоверяемой клиентской платформе. На практике возможно победить даже некоторые "доверяемые" платформы.
существуют различные нападения, которые невозможно обнаружить в общем случае - главным образом изменение переменных в памяти. Если Вы не можете доверять переменным своей собственной программы, Вы не можете действительно достигнуть очень многого.
другие методы, обрисованные в общих чертах выше, могут помочь, но не решают основную проблему работы недоверяемой платформы.
<час>Из интереса, действительно ли Вы уверены, что люди попытаются взломать высокую таблицу счета? У меня была игра онлайн больше двух лет теперь с тривиально-crackabe высокой таблицей счета. Многие люди играли его, но у меня нет доказательства, что любой попытался взломать рекорды.