HashFlare

О безопасности Online Flash-игр

Победителем естественно является тот, кто быстрее/точнее/правильнее выполнил задание.

Как это работает?

Подобная онлайн игра обычно состоит из 2 или 3 частей:

  1. Непосредственно «флэшка», в которой играет пользователь
  2. Статистика на сервере, сохраняющая результат и определяющая победителя.
  3. [Опционально] Вспомогательный скрипт на сервере, обеспечивающий флэшку необходимой информацией по запросу.

В случае двухкомпонентной игры (п1, п2), вся игра реализована во флэш. Результаты просто отправляются по HTTP скрипту на сервере.

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

Безопасно ли?

С одной стороны всё правильно и практически безопасно — флэшка общается напрямую со скриптами сервера, пускай и по HTTP, но «скрытно» для пользователя.

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

«Хакер» может проследить протокол общения флэшки с сервером, а затем воспроизвести его, но уже с изменёнными по его усмотрению параметрами.

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

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

Как защититься?

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

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

Например можно реализовать такую схему:

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

По завершению игры, внутри флэшки по некоторому алгоритму создаётся контрольная сумма из отправленного числа, время начала / завершения игры, результата и т.д., которая отправляется на сервер вместе с результатом.

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

Также можно использовать передачу данных по зашифрованному каналу. Это во многих случаях сложнее и может требовать дополнительного программного обеспечения, но потенциально более безопасно т.к. «хакеру» будет сложнее получить протокол общения.

Теперь игра в безопасности?

На некоторое время да, пока ей не заинтересуется более «продвинутый» в безопасности человек.

Стоит также учесть тот факт, что флэш игру можно декомпилировать и посмотреть алгоритм.

Подводя итоги

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

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

Не секрет что её разработка требует определённое число соотношения человек/часов, причем чем сложнее защита, тем больше будет данное соотношение.

О безопасности Online Flash-игр

О безопасности Online Flash-игр

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

Однако если по результатам игр подводятся какие либо итоги и/или раздаются награды, то стоит подумать о защитных механизмах. Чем более значимый приз — тем более сложным должен быть механизм защиты от «нечестных» игроков.

Поделитесь ссылкой с друзьями


Добавить комментарий

Ваш e-mail не будет опубликован.

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой:

Top