Страница 1 из 3

Безопасность: setUserScore и/или отправка на сервер

Добавлено: 28 май 2010, 11:07
Noise Gate
Возник вопрос: как максимально защитить вызов setUserScore и/или отправку каких-либо значений на собственный сервер.

Ведь, теоретически, если я установил у себя какое-либо приложение, то я могу имитировать любой запрос к API. Для этого надо всего лишь знать api_secret, который можно получить декомпиляцией приложения. После этого я могу "установить" score в любое значение.

То же самое касается и отправки на сервер: свой auth_key я знаю всегда, поэтому, если не шифровать запросы, то их тоже можно подделать (проверено - делал роботов для нескольких flash-игр ВКонтакте). С другой стороны, метод шифрования тоже можно получить декомпиляцией, если разобраться в коде. Есть хоть какой-то метод защититься от подобного?

Предлагаю обсуждать различные методы. Буду благодарен за любые идеи.

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 28 май 2010, 21:16
совесть
в один прекрасный и солнечный день, скачал я CS5.... а там функция от декомпиляции, и еще (вроде как) нету декомпиляторов для этой штуки. а дальше, дальше делаем ключ, который знает флеха и сервак. заодно поюзаем алгоритм, который генерирует случайный код. например getServerTime в другй системе счисления. кодируем это всё, отправляем серверное время, пхп всё обрабатывает и проверяет, и вуаля, готово (=

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 28 май 2010, 21:24
bodnar
Можно делать так, чтобы не флешка рассчитывала счет, а сервер, по исходному положению и полученному набору действий пользователя рассчитывал счет. Но этот вариант подходит только если данные хранить на своем же серваке

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 01 июн 2010, 08:42
Noise Gate
совесть
На счет CS5 - интересно, а вот отправлять ключи и сами сообщения в одном запросе, имхо, плохая идея - только если на 100% быть уверенным, что не декомпильнут и не сломают алгоритм шифрации данных...

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


А может кто-нибудь знает, как это делается на сайтах вроде MochiGames, Kongregate и прочих крупных порталах?

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 01 июн 2010, 13:41
совесть
кто сказал что мы ключ посылаем? мы посылаем только sig. ключа не видно. можно сделать мудрено, но верно. посмотреть через сколько приходят данные с флешки(время задержки), а флешкой отправлять серверное время, а на серваке проверяем диапозон.

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 02 июн 2010, 08:13
Noise Gate
совесть,
не уверен, что до конца понял. Если не сложно, распиши алгоритм поподробнее, пожалуйста.

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 28 июл 2010, 14:10
Noise Gate
Нашел интересные мысли по поводу сабжа:
http://skahin.blogspot.com/2010/01/flex-php.html

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 11 авг 2010, 10:51
Noise Gate
Пришел к выводу, что как ни старайся, а спастись не удастся, поэтому необходимо делать какую-то "интеллектуальную" защиту на стороне сервера, которая позволит вычислить злоумышленников...

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 19 окт 2010, 08:23
Noise Gate
Ну вот - все, как я и предполагал. Интеллектуальная защита важна как никогда! 8-)
Вчера запустили приложение на рейтинг, сегодня в логах по безопасности наблюдаю следующее:
1287421422 ; 18-10-2010 21:03:42 ; 31257179 ; user get penalty: 748
А это значит, что чел предпринял как минимум 748 попыток сымитировать правильный ответ клиента серверу :lol:

И еще:
1287422504 ; 18-10-2010 21:21:44 ; 0 ; user not authorized on answer
1287422362 ; 18-10-2010 21:19:22 ; 2147483647 ; user not authorized on answer
Это уже пользователи с id = 0 и 2147483647.

Ну-ну, ломайте-ломайте =)

Re: Безопасность: setUserScore и/или отправка на сервер

Добавлено: 07 янв 2011, 15:46
Nick Lisogor
Для этого надо всего лишь знать api_secret, который можно получить декомпиляцией приложения.
Api_secret можно и защитить и при декомпиляции его значения вы просто не узнаете)