Передача незащищенных данных из приложения Flash на сервер?

StackOverflow https://stackoverflow.com/questions/46415

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Один простой способ — выполнить некоторые операции с данными, например хэшем, и передать хеш обратно на сервер вместе с данными.Однако это легко сломать кем-то, имеющим доступ к исходному коду клиента.

Редактировать:Я понимаю, что невозможно взломать ничего, но хочу сделать это как можно сложнее.Я думаю, что решение @jcnnghm по шифрованию данных с помощью открытого ключа и, при необходимости, проверке работоспособности и/или перерасчету с использованием журналов игры, является лучшим вариантом.SSL-шифрование также является хорошей идеей, поскольку оно затрудняет расшифровку того, что на самом деле отправляется обратно на сервер.

Это было полезно?

Решение

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

Ничто не будет полностью защищено от взлома, что бы вы ни делали, но это остановит всех, кроме самых решительных.

Обновлять: @отметка:Flash изначально поддерживает SSL.

Другие советы

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

Ознакомьтесь с пакетом AS3Crypto по адресу http://code.google.com/p/as3crypto/.Я не пробовал, но этот пакет утверждает, что (частично) поддерживает протокол TLS 1.0.

TLS обеспечит безопасный туннель между вашим Flash-приложением и сервером.http://en.wikipedia.org/wiki/Secure_Sockets_Layer

@jcnnghm вы обычно не хотите использовать шифрование открытого ключа (RSA, DSA) для шифрования объема данных из -за его большого времени вычисления.Шифрование с открытым ключом должно использоваться на этапах установления связи и согласования ключей в протоколе безопасности, но шифрование больших объемов данных должно обрабатываться с помощью симметричного шифра, такого как AES и TDES.Протоколы TLS и SSL работают таким образом.

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

Музыкальная и киноиндустрия потратила десятки миллионов на DRM, которые домашние любители взломали за несколько дней/недель.Если они не смогут защитить их вещи...

Я согласен с тем, что ответы ни о чем не являются доказательством хакера.Потому что, как только вы сможете его прочитать, вы сможете манипулировать им/копировать его и, следовательно, декомпилировать.

Другой подход, который я планировал, — это генерировать уникальные ключи pr.сеанс игрока (включая какое-то время/дату в качестве значений соли).

Затем в приложении, возможно, периодически отправляя/передавая оценку статуса и получая новый действительный ключ.Если эта синхронизация не удалась, разорвите весь сеанс.

Обратной стороной этого может быть слишком большое количество одновременных игроков, что снижает скорость ответа сервера и, следовательно, создает «фальшивые таймауты» + оставляет игровой сервер открытым для DoS-атак.

Но что-то с обновлением «сеансового ключа», пока у пользователя есть сеанс, потребует немного дополнительного управления сеансом, но если это заставит мошенников работать немного усерднее, я обязательно попробую :о)

С другой стороны, НИЧТО не защищено от хакеров, поэтому не доверяйте этому на 100% — какое бы умное решение вы ни придумали.

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

В настоящее время мой план состоит в том, чтобы построить большой многоуровневый мир, и клиент/игрок будет получать ТОЛЬКО файлы, прикрепленные к той части, в которой находится игрок.

Надеюсь, это принесет пользу вашим мыслям.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top