Безопасность: достижения и оценки API в AS3 - PullRequest
5 голосов
/ 29 апреля 2011

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

Я хочу разработать API в AS3, который позволит разработчику (для начала) сделать следующее:

  1. Отображение диалога, который позволяет пользователю войти в свою «учетную запись» (размещенную на моем сайте).
  2. Отправить оценку / значение на веб-сайт и приписать его вошедшему в систему пользователю.
  3. Разблокировать достижение (достижения будут устанавливаться разработчиком в веб-интерфейсе, где они также получат ключ некоторого типа для использования со своим API.
  4. Отображение рекордов, профилей других игроков в игре и т. Д. (Отображать практически любые статистические данные в игре).

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

Вот вопросы, которые я могу придумать на месте:

  1. Самое важное - люди крадут ключ API с помощью атаки "человек посередине".
  2. Инъекция рекордов, ложное достижение разблокируется.
  3. Декомпиляция SWF и кража ключа API.
  4. Использование ключа API для создания фиктивного приложения Flash и отправки случайных данных, таких как рекорды.
  5. Изменение самого API, чтобы вам не нужно было входить в систему и т. Д.

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

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

Я начинаю задаваться вопросом, является ли эта идея тупиком.

Любой совет по обеспечению этого (или его части) был бы великолепен.

Ответы [ 3 ]

1 голос
/ 29 апреля 2011
0 голосов
/ 29 апреля 2011
  1. Против «человек посередине» HTTPS кажется единственным вариантом. У него могут быть свои уязвимости, но он намного лучше любого домашнего решения. Проблема в том, что вам понадобится настоящий сертификат из авторизованного центра, поскольку плагин Flash на основе ActiveX не будет доверять самоподписанному сертификату.
  2. Не должно быть возможно без декомпиляции
  3. SecureSWF с достаточно высокими настройками (обфускация пути выполнения кода и зашифрованные строки) должна побить большинство декомпиляторов. Конечно, SWF можно проверить с помощью шестнадцатеричного редактора, но для этого потребуется очень решительный хакер.
  4. не должно быть возможным без декомпиляции
  5. API должен быть на сервере, и любая функция API требует пользовательского контекста (загружается HTTPS)

Также добавьте шифрование для flash общих объектов \ куки. Я успешно изменил некоторые сохранения с помощью простого шестнадцатеричного редактора, потому что они были просто объектами в формате AMF. Шифрование будет зависеть от декомпиляции SWF, но так как мы используем SecureSWF ... Или перенесите сохраненные игры на сервер.

0 голосов
/ 29 апреля 2011

клиентская сторона никогда не бывает достаточно безопасной, поэтому я бы предложил перенести всю логику на сервер, сократив клиент до просто пользовательского интерфейса.Если это невозможно из-за тайм-аутов в сети - отправляйте баллы / достижения только с помощью журнала пар «user_action - game_state» и проверяйте его на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...