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

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение Noise Gate »

Возник вопрос: как максимально защитить вызов setUserScore и/или отправку каких-либо значений на собственный сервер.

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

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

Предлагаю обсуждать различные методы. Буду благодарен за любые идеи.
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

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

Сообщение совесть »

в один прекрасный и солнечный день, скачал я CS5.... а там функция от декомпиляции, и еще (вроде как) нету декомпиляторов для этой штуки. а дальше, дальше делаем ключ, который знает флеха и сервак. заодно поюзаем алгоритм, который генерирует случайный код. например getServerTime в другй системе счисления. кодируем это всё, отправляем серверное время, пхп всё обрабатывает и проверяет, и вуаля, готово (=
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

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

Сообщение bodnar »

Можно делать так, чтобы не флешка рассчитывала счет, а сервер, по исходному положению и полученному набору действий пользователя рассчитывал счет. Но этот вариант подходит только если данные хранить на своем же серваке
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение Noise Gate »

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

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


А может кто-нибудь знает, как это делается на сайтах вроде MochiGames, Kongregate и прочих крупных порталах?
Аватара пользователя
совесть
Разработчик
Разработчик
Сообщения: 156
Зарегистрирован: 22 дек 2009, 23:58

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

Сообщение совесть »

кто сказал что мы ключ посылаем? мы посылаем только sig. ключа не видно. можно сделать мудрено, но верно. посмотреть через сколько приходят данные с флешки(время задержки), а флешкой отправлять серверное время, а на серваке проверяем диапозон.
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение Noise Gate »

совесть,
не уверен, что до конца понял. Если не сложно, распиши алгоритм поподробнее, пожалуйста.
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение Noise Gate »

Нашел интересные мысли по поводу сабжа:
http://skahin.blogspot.com/2010/01/flex-php.html
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение Noise Gate »

Пришел к выводу, что как ни старайся, а спастись не удастся, поэтому необходимо делать какую-то "интеллектуальную" защиту на стороне сервера, которая позволит вычислить злоумышленников...
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

Сообщение 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.

Ну-ну, ломайте-ломайте =)
Nick Lisogor
FL Team
FL Team
Сообщения: 119
Зарегистрирован: 12 дек 2010, 14:08

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

Сообщение Nick Lisogor »

Для этого надо всего лишь знать api_secret, который можно получить декомпиляцией приложения.
Api_secret можно и защитить и при декомпиляции его значения вы просто не узнаете)
Ответить