Защитите списки Highscore онлайн для невеб-игр

Может быть, вы можете сохранить «статус» меню в файле cookie или в сеансе, например, в виде снимка, и прочитать его при загрузке страницы.

24
задан LKM 25 August 2008 в 13:23
поделиться

9 ответов

В конце дня Вы полагаетесь на доверие клиенту. Если клиент отправляет воспроизведения на сервер, это достаточно легко к воспроизводимому, или измените успешный playthrough и отправьте это на сервер.

Ваш лучший выбор состоит в том, чтобы поднять планку для обмана выше того, что плеер считал бы стоящим преодоления. Чтобы сделать это, существуют много доказанные (но часто не упомянуты) методы, которые можно использовать:

  1. Leave поместил в черный список мошенников в ловушке. Они видят свои собственные очки, но никто больше не может. Если они не проверяют путем входа в систему с различной учетной записью, они думают, что успешно взломали игру.
  2. , Когда кто-то будет отмечен как мошенник, задержите любые последствия учетной записи от выяснения до данной точки в будущем. Выскажите это случайное мнение, в течение одного - трех дней. Как правило, мошенник попробует несколько методов и в конечном счете успешно выполнится. Путем задержки обратной связи состояния счета до более поздней даты им не удается понять то, что поймало их.
  3. Получение все игровые пользовательские команды и отправляют их на сервер. Проверьте их против других очков в данной дельте. Например, если игрок использовал действие охоты 200 раз, но получил счет 200 000, но соседние плееры в игре стреляли 5,000 раз для получения счета 210 000, это может инициировать порог, который отмечает человека для далее или человеческое расследование.
  4. Добавленная стоимость и персистентность к Вашим учетным записям пользователей. Если Ваши учетные записи пользователей имеют unlockables для Вашей игры, или если Ваша игра требует покупки, вес запрета больше, поскольку пользователь не может возвратить свое предыдущее состояние счета путем простого создания новой учетной записи через веб-прокси.
39
ответ дан 28 November 2019 в 22:15
поделиться

Никакое решение никогда не будет прекрасным, в то время как игра работает на системе под управлением пользователя, но существует несколько шагов, которые Вы могли сделать для создания взламывания системы большей проблемой. В конце цель может только состоять в том, чтобы сделать взламывание системы большей проблемой, чем это стоит.

  • Отправляют, некоторая дополнительная информация с высоким счетом запрашивает проверить один сторона сервера. Если Вы понимаете 5 мыслей для каждого X, и игра только содержит 10 Xs, то у Вас есть некоторые дополнительные обручи для создания хакера для перехода до, приняли их счет как допустимый.
  • Имеют сервер, отправляют случайную проблему, с которой нужно справиться с несколькими байтами двоичного файла игры от того смещения. Это означает, что хакер должен иметь в наличии нетронутую копию двоичного файла (просто немного больше проблемы).
  • , Если у Вас есть лицензионные ключи, потребуйте, чтобы рекорды включали их, таким образом, можно запретить пойманное взламывание людей системы. Это также позволяет Вам отследить недопустимые попытки, как определено выше, запретить людей, проверяющих протокол, прежде чем когда-либо даже отправят допустимый счет.

, В целом, хотя, заставляя игру, достаточно популярную для людей хотеть взломать его, вероятно, далекая более сложная задача.

23
ответ дан 28 November 2019 в 22:15
поделиться

Я честно не думаю, что это возможно.

я сделал его перед использованием довольно простого ключевого шифрования со сжатым двоичным файлом, который работал достаточно хорошо на безопасность, которой я потребовал, но я честно думаю, полагает ли кто-то, что взламывание Вашего высокого счета онлайн представляет взлом в виде таблицы, это будет сделано.

существуют некоторые довольно грустные люди там, которые также, оказывается, довольно ярки, если Вы не можете получить их всех, положил, это - проигранное дело.

6
ответ дан 28 November 2019 в 22:15
поделиться

Если Вашей игре встроили систему воспроизведения, можно отправить воспроизведения серверу и иметь сервер, вычисляют счет от воспроизведения.

Этот метод не прекрасен, можно все еще обмануть путем замедления игры (если это основано на действии), или путем записи бота.

5
ответ дан 28 November 2019 в 22:15
поделиться

Я делал часть этого с моими флеш-играми, и это - проигрывающее сражение действительно. Специально для ActionScript, который может декомпилироваться в несколько читаемый код без слишком большого усилия.

способом, которым я делал его, является довольно стандартный подход отправки счета и названия плеера в простом тексте и затем хеше двух (правильно посоливший). Очень немного людей определяются достаточно для приложения усилий для понимания этого и некоторых, кто, сделал бы это так или иначе, инвертирование все время Вас поместило в него.

подводя итоги, моя философия должна провести время при создании игры лучше и просто затруднять достаточно для обмана.

Одна вещь, которая могла бы быть довольно эффективной, состоит в том, чтобы иметь игру, отправляют счет серверу несколько раз, поскольку Вы играете, отправляя небольшому количеству информации о геймплее каждый раз, позволяя Вам проверить, если счет "реалистичен". Но это могло бы быть немного чрезмерно действительно.

5
ответ дан 28 November 2019 в 22:15
поделиться

Это - действительно трудный вопрос.

я никогда не реализовывал такую вещь, но вот простой aproximmation.

Ваше основное беспокойство происходит из-за хакеров, предполагающих, что является им, Ваше приложение делает и затем отправляет их собственные результаты.

ну, в первую очередь, если Ваше приложение не имеет большой успех, я не был бы взволнован. Выполнение такой вещи является чрезвычайно трудным.

Шифрование не поможет с проблемой. Вы видите, шифрование помогает защитить продвигающиеся данные, но это не защищает ни одну из сторон транзакции, прежде чем данные будут зашифрованы (который является, где основная уязвимость может быть). Таким образом, при шифровании верного данные останутся частными, но это не будет безопасно.

, Если Вы действительно волнуетесь по поводу этого, что я предложу запутать код и разработать систему счета способом, которая не абсолютно очевидна, что делает. Здесь мы можем заимствовать некоторые вещи из протокола шифрования. Вот пример:

  1. Скажем, счет является некоторым номером m
  2. , Вычисляют некоторый проверять счет (например, CRC или любая другая система, Вы видите ноги. На самом деле, если Вы просто изобретите один, неважно, как Ламе - он, то это будет работать лучше)
  3. , Получают закрытый ключ пользователя (D) от Вашего удаленного сервера (по безопасному соединению, очевидно). Вы - единственный, которые знают этот ключ.
  4. Вычисляют модификацию X=m^D n (n быть общедоступным модулем Вашего общедоступного/с закрытым ключом алгоритма) (то есть, зашифруйте его: P)

, Поскольку Вы видите, что это - просто путаница другого вида. Можно спуститься по тому пути, пока Вы хотите. Например, Вы можете поиск самые близкие два простых числа к X и использовать их, чтобы зашифровать CRC и отправить его также на сервер, таким образом, у Вас будут CRC и счет отдельно и с различными схемами шифрования.

, Если бы Вы используете это в сочетании с путаницей, я сказал бы, что это было бы трудно взломать. Nontheless даже, который мог быть обратным engingeered, все это зависит от интереса и способности хакера, но... серьезно, какое пятно прилагает такие усилия для изменения его результатов на игре? (Если не WoW или что-то)

Одно последнее примечание

Obfuscator для.NET

Obfuscator для Дельфи/C++

Obfuscator для ассемблера (x86)

3
ответ дан 28 November 2019 в 22:15
поделиться

Как в другом ответе говорится, Вы вынуждены доверять потенциально злонамеренному клиенту, и простой deterant плюс немного человеческого контроля будет достаточно для маленькой игры.

, Если Вы хотите стать необычными, тогда необходимо искать шаблоны мошенничества в данных счета, средстве моделирования к компании по выпуску кредитных карт, смотрящей на данные заряда. Более состояния, которое клиент передает на Ваш сервер, потенциально легче, он должен найти шаблон корректного или неправильного поведения через код. Например. скажите, что клиент должен был загрузить основанный на времени контрольный журнал счета (который, возможно, можно также использовать, чтобы позволить другому клиенты смотреть лучшие игры), сервер может тогда проверить, если журнал счета нарушает какое-либо из игровых правил.

В конце, это все еще о создании его достаточно дорого для воспрепятствования обмана табло. Вы хотели бы систему, где можно всегда улучшаться (легче обновить) серверный код для контакта с любыми новыми нападениями на систему проверки.

2
ответ дан 28 November 2019 в 22:15
поделиться

@Martin.

Это - то, как я верю работам Mario Kart Wii. Добавленная премия - то, что можно позволить всем другим плеерам смотреть, как высокий держатель счета получил высокий счет. Забавная вещь об этом состоит в том, что при проверке самого быстрого" Вулкан Ворчания " след времени Вы будете видеть, что кто-то нашел ярлык, которые позволяют Вам пропустить 95% дорожки. Я не уверен, есть ли у них все еще это как самое быстрое время.

2
ответ дан 28 November 2019 в 22:15
поделиться

Вы не можете сделать этого на недоверяемой клиентской платформе. На практике возможно победить даже некоторые "доверяемые" платформы.

существуют различные нападения, которые невозможно обнаружить в общем случае - главным образом изменение переменных в памяти. Если Вы не можете доверять переменным своей собственной программы, Вы не можете действительно достигнуть очень многого.

другие методы, обрисованные в общих чертах выше, могут помочь, но не решают основную проблему работы недоверяемой платформы.

<час>

Из интереса, действительно ли Вы уверены, что люди попытаются взломать высокую таблицу счета? У меня была игра онлайн больше двух лет теперь с тривиально-crackabe высокой таблицей счета. Многие люди играли его, но у меня нет доказательства, что любой попытался взломать рекорды.

2
ответ дан 28 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: