Насколько безопасно "будущее браузерных игр"?

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

позвольте мне привести вам пример: представьте себе эту игру платформы, где вы получаете значки, когда вы выигрываете, например, чрезвычайно жесткий уровень. Когда вы действительно выиграли этот значок, на сервер подается запрос, чтобы обновить свой онлайн-профиль. Разве это не очень просто для хакера, чтобы просто отправить это запросить и получить значок, не играя в игру? Потому что:

  • исходный код на стороне клиента виден и его невозможно скрыть
  • можно выполнить JavaScript из командной строки

Я не вижу способа помешать этому хакеру получить свой значок... Есть ли способ сделать эту игру безопасной?

3 ответов


да, если ты создал свою игру, как это было бы очень легко взломать. Но почему это специфично для HTML5? Вы могли сделать это с любым типом игры, который был написан так. Даже с родной настольной игрой вы все равно можете подделать запрос. Единственное отличие состоит в том, что подделка HTTP-запросов проще, чем обратные запросы, сделанные настольной игрой.

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

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


Это ничем не отличается от любой флеш-игры или действительно игры с загружаемым клиентом, таким как World of Warcraft. Все, что является неотъемлемой частью справедливости игры, должно обрабатываться на сервере.


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

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