Есть ли способ остановить вмешательство конечного пользователя в код игры JavaScript на моей странице? [дубликат]

этот вопрос уже есть ответ здесь:

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

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

Тематическое Исследование: Коробка Конфет 2 (candybox2.net) мне потребовалось менее 20 секунд, чтобы получить 100000000 конфет.

есть ли способ остановить это?

1 ответов


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

Если клиентский код должен быть сделан устойчивым к взлому, вы уже потеряли; что путь лежит Панкбастер, Античит Valve и другие механизмы, которые обычно требуют, чтобы пользователь позволил вам постоянно устанавливать руткит на своей машине, чтобы вы могли убедиться, что он не обманывает.

для некоторых проектов, над которыми я работал в последнее время ASP.Net в качестве задней части, я нашел помощью SignalR чтобы быть очень эффективным!--15-->Комета - тип коммуникационный уровень для JavaScript и динамического HTML, даже принимая преимущество поддержки WebSocket HTML 5 Если доступно.