Как вы препятствуете копированию или изменению вашей веб-игры JavaScript /HTML5?

Я планирую игру, построенную с использованием JavaScript и HTML5.

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

Можно ли что-нибудь сделать, чтобы кто-нибудь не читал JavaScript?

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

44 голоса | спросил Christian 9 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 09 Sep 2010 18:39:09 +0400 2010, 18:39:09

10 ответов


44

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

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

ответил Aidas Bendoraitis 9 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 09 Sep 2010 19:05:49 +0400 2010, 19:05:49
11
  

как вы могли бы помешать кому-то просто копировать JavaScript с веб-сервера и либо сделать свою игру с ним (не моя самая большая проблема)

Здесь помогает закон. На практике это не происходит очень часто.

  

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

Нет надежных клиентов в дикой природе, именно по этой причине. Откажитесь от этой мечты сейчас. :)

ответил Kylotan 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 10 Sep 2010 19:48:55 +0400 2010, 19:48:55
8

Как и все остальные; сохраняйте как можно больше кода на стороне сервера.

Метод, который я использовал для копирования кода, немного нечетный, но до сих пор он хорошо работал.

  • На стороне сервера создайте уникальный идентификатор и сохраните его позже.
  • На стороне сервера добавьте уникальный идентификатор в элемент сценария во время рендеринга html.
  • На стороне клиента создайте соединение WebSocket и передайте уникальный идентификатор серверу.
  • На стороне сервера, сопоставить идентификатор с текущим списком.
  • Если совпадение не найдено, закройте соединение.
  • Если найдено совпадение , замените обработчик сообщений своим «правильным» и отмените идентификатор.
  • Передайте свой секретный код клиенту как JSON, {"func": "function () {dostuff ();}"}
  • Клиентская сторона, следите за сообщениями, если они содержат «func», eval it.

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

ответил Stephen Belanger 16 22010vEurope/Moscow11bEurope/MoscowTue, 16 Nov 2010 21:02:58 +0300 2010, 21:02:58
3

Единственный способ быть уверенным в том, что ваш игровой код будет безопасным, - это создать тип игры клиент /сервер и поместить столько же кода, сколько на сервере. И, конечно же, сделайте этот сервер безопасным!

Основная проблема заключается в том, что если код работает на моем компьютере, я могу его проверить, декомпилировать и выяснить, как это работает. Это справедливо для JavaScript, Flash, C ++, всего остального. На самом деле, в MMO-разработке (где основная часть моего профессионального опыта) предположение с самого начала заключается в том, что клиент скомпрометирован: все, что вы написали для клиента, уже находится в руках того, кто его хочет, злонамеренного или нет.

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

Но если вы находитесь в ситуации, когда, скажем, ваш босс хочет какой-то защиты кода, вы можете google «Javascript obfuscator» - там есть много свободного и программного обеспечения для оплаты, что делает JS по крайней мере о непроницаемом для декомпиляции как Flash.

ответил DariusK 6 +04002010-10-06T19:58:32+04:00312010bEurope/MoscowWed, 06 Oct 2010 19:58:32 +0400 2010, 19:58:32
3

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

ответил coderanger 8 12010vEurope/Moscow11bEurope/MoscowMon, 08 Nov 2010 20:37:21 +0300 2010, 20:37:21
0

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

ответил 22 MarpmTue, 22 Mar 2011 12:20:37 +03002011-03-22T12:20:37+03:0012 2011, 12:20:37
-1

Вам нужно использовать Javascript Minifier. Есть много доступных вариантов, не стесняйтесь найти тот, который вам нравится. Чтобы сэкономить вам несколько исследований, вы можете попробовать Yahoo Minifier . Я сам этого не запускал, но я предполагаю, что он будет делать то, что вам нужно. Цель состоит в том, чтобы: 1) уменьшить размер файла и 2) обфускать код. Это достигается путем удаления всех пробелов, комментариев и замены имен переменных более короткими, бессмысленными.

Большинство веб-приложений сегодня имеют значительное количество Javascript и используют такие инструменты, как эти, чтобы попытаться защитить свой IP-адрес. Как говорили другие, вы всегда должны спрашивать: «Могу ли я сделать это на сервере?» для важных или чувствительных операций, но я считаю, что это должно обеспечить некоторую защиту.

ответил Alex Schearer 9 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 09 Sep 2010 22:07:09 +0400 2010, 22:07:09
-1

Использовать компилятор Google закрытия http://code.google.com/closure/compiler/ Это не просто минимизатор js;)

В чем преимущества использования компилятора Closure?

  1. Эффективность . Компилятор Closure уменьшает размер ваших файлов JavaScript и делает их более эффективными, помогая вашему приложению быстрее загружаться и уменьшая ваши потребности в пропускной способности.
  2. Проверка кода. Компилятор Closure предоставляет предупреждения о недопустимом JavaScript и предупреждениях о потенциально опасных операциях, помогая вам создавать JavaScript, который менее глютен и более прост в обслуживании.

ответил Deyaa 8 12010vEurope/Moscow11bEurope/MoscowMon, 08 Nov 2010 17:20:29 +0300 2010, 17:20:29
-1

Или вы можете использовать что-то вроде Game Maker HTML5 для создания ваша игра, которая будет затухать код для вас. Что означает, что это сделает код нечитаемым для людей. И это будет почти невозможно для редактирования.

ответил Gwhiz 11 MarpmSun, 11 Mar 2012 15:01:33 +04002012-03-11T15:01:33+04:0003 2012, 15:01:33
-1

Любая собственность должна храниться на стороне сервера. На стороне клиента вы предоставляете достаточно для этого, чтобы облегчить их использование в игре.

ответил Edward Coast 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 25 Sep 2017 23:29:13 +0300 2017, 23:29:13

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132