Безопасность: setUserScore и/или отправка на сервер
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Безопасность: setUserScore и/или отправка на сервер
Возник вопрос: как максимально защитить вызов setUserScore и/или отправку каких-либо значений на собственный сервер.
Ведь, теоретически, если я установил у себя какое-либо приложение, то я могу имитировать любой запрос к API. Для этого надо всего лишь знать api_secret, который можно получить декомпиляцией приложения. После этого я могу "установить" score в любое значение.
То же самое касается и отправки на сервер: свой auth_key я знаю всегда, поэтому, если не шифровать запросы, то их тоже можно подделать (проверено - делал роботов для нескольких flash-игр ВКонтакте). С другой стороны, метод шифрования тоже можно получить декомпиляцией, если разобраться в коде. Есть хоть какой-то метод защититься от подобного?
Предлагаю обсуждать различные методы. Буду благодарен за любые идеи.
Ведь, теоретически, если я установил у себя какое-либо приложение, то я могу имитировать любой запрос к API. Для этого надо всего лишь знать api_secret, который можно получить декомпиляцией приложения. После этого я могу "установить" score в любое значение.
То же самое касается и отправки на сервер: свой auth_key я знаю всегда, поэтому, если не шифровать запросы, то их тоже можно подделать (проверено - делал роботов для нескольких flash-игр ВКонтакте). С другой стороны, метод шифрования тоже можно получить декомпиляцией, если разобраться в коде. Есть хоть какой-то метод защититься от подобного?
Предлагаю обсуждать различные методы. Буду благодарен за любые идеи.
Re: Безопасность: setUserScore и/или отправка на сервер
в один прекрасный и солнечный день, скачал я CS5.... а там функция от декомпиляции, и еще (вроде как) нету декомпиляторов для этой штуки. а дальше, дальше делаем ключ, который знает флеха и сервак. заодно поюзаем алгоритм, который генерирует случайный код. например getServerTime в другй системе счисления. кодируем это всё, отправляем серверное время, пхп всё обрабатывает и проверяет, и вуаля, готово (=
Re: Безопасность: setUserScore и/или отправка на сервер
Можно делать так, чтобы не флешка рассчитывала счет, а сервер, по исходному положению и полученному набору действий пользователя рассчитывал счет. Но этот вариант подходит только если данные хранить на своем же серваке
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Re: Безопасность: setUserScore и/или отправка на сервер
совесть
На счет CS5 - интересно, а вот отправлять ключи и сами сообщения в одном запросе, имхо, плохая идея - только если на 100% быть уверенным, что не декомпильнут и не сломают алгоритм шифрации данных...
bodnar
Можно и так, конечно, но в этом случае придется излишне нагружать сервер, да и быстродействие самой игры будет зависеть от скорости соединения и скорости обработки данных...
А может кто-нибудь знает, как это делается на сайтах вроде MochiGames, Kongregate и прочих крупных порталах?
На счет CS5 - интересно, а вот отправлять ключи и сами сообщения в одном запросе, имхо, плохая идея - только если на 100% быть уверенным, что не декомпильнут и не сломают алгоритм шифрации данных...
bodnar
Можно и так, конечно, но в этом случае придется излишне нагружать сервер, да и быстродействие самой игры будет зависеть от скорости соединения и скорости обработки данных...
А может кто-нибудь знает, как это делается на сайтах вроде MochiGames, Kongregate и прочих крупных порталах?
Re: Безопасность: setUserScore и/или отправка на сервер
кто сказал что мы ключ посылаем? мы посылаем только sig. ключа не видно. можно сделать мудрено, но верно. посмотреть через сколько приходят данные с флешки(время задержки), а флешкой отправлять серверное время, а на серваке проверяем диапозон.
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Re: Безопасность: setUserScore и/или отправка на сервер
совесть,
не уверен, что до конца понял. Если не сложно, распиши алгоритм поподробнее, пожалуйста.
не уверен, что до конца понял. Если не сложно, распиши алгоритм поподробнее, пожалуйста.
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Re: Безопасность: setUserScore и/или отправка на сервер
Нашел интересные мысли по поводу сабжа:
http://skahin.blogspot.com/2010/01/flex-php.html
http://skahin.blogspot.com/2010/01/flex-php.html
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Re: Безопасность: setUserScore и/или отправка на сервер
Пришел к выводу, что как ни старайся, а спастись не удастся, поэтому необходимо делать какую-то "интеллектуальную" защиту на стороне сервера, которая позволит вычислить злоумышленников...
-
- Сообщения: 691
- Зарегистрирован: 28 апр 2010, 12:34
Re: Безопасность: setUserScore и/или отправка на сервер
Ну вот - все, как я и предполагал. Интеллектуальная защита важна как никогда!
Вчера запустили приложение на рейтинг, сегодня в логах по безопасности наблюдаю следующее:
И еще:
Ну-ну, ломайте-ломайте =)
Вчера запустили приложение на рейтинг, сегодня в логах по безопасности наблюдаю следующее:
А это значит, что чел предпринял как минимум 748 попыток сымитировать правильный ответ клиента серверу1287421422 ; 18-10-2010 21:03:42 ; 31257179 ; user get penalty: 748
И еще:
Это уже пользователи с id = 0 и 2147483647.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
Ну-ну, ломайте-ломайте =)
-
- FL Team
- Сообщения: 119
- Зарегистрирован: 12 дек 2010, 14:08
Re: Безопасность: setUserScore и/или отправка на сервер
Api_secret можно и защитить и при декомпиляции его значения вы просто не узнаете)Для этого надо всего лишь знать api_secret, который можно получить декомпиляцией приложения.