Сегодня я расскажу вам, как защитить внутриигровые покупки в играх на мобильной платформе iOS с помощью собственного сервера.
Практически все компании, выпускающие свои продукты, заботятся о безопасности своих приложений и стараются максимально защитить их от взлома.
В одной из этих компаний я работаю.
На данный момент в Испании проходит софт-лонч нашей игры.
Я сам являюсь серверным разработчиком и ответственность за проверку внутриигровых покупок в игре, которую разрабатывала наша компания, легла на мои плечи как программиста.
Все внутриигровые покупки подтверждены моим сервером.
Это происходит следующим образом.
Пользователь покупает нашу валюту в игре, затем на смартфон с сервера покупки Apple отправляется json-сообщение со всеми данными о покупке.
После этого этот json попадает на наш сервер, некоторые поля проверяются и отправляются на сервер проверки Apple, чтобы проверить, все ли в порядке.
Если все в порядке, то приходит json от apple, в котором содержится много информации о покупке.
В соответствии с документация на сайте Apple нам нужно только проверить поле статуса из присланного нам json. Если он равен 0, то покупка верна и мы берем с пользователя нашу валюту.
Я не придумал ничего нового и следовал этой документации.
Во время мягкого запуска статистика показала, что один из пользователей купил в игре нашу валюту на 400 долларов.
Однако нас это не очень обрадовало, поскольку мы увидели, что эти покупки были с взломанного смартфона.
Проанализировав все данные, которые устройство пользователя отправляло на наш сервер, мы обнаружили, что они одинаковы.
Немного поискав в Интернете, мы наткнулись на такую вещь, как LocallAPStore Cydia Твик в джейлбрейке iOS. Это работает следующим образом.
Когда пользователь совершает внутриигровую покупку в игре, LocallAPStore перехватывает данные и заменяет их своими, а затем возвращает в игру обратный звонок о том, что покупка совершена, после чего они поступают на наш сервер и отправляются в Apple. .
Мы получаем статус ответа 0 от сервера проверки Apple. Поэтому, чтобы этого не допустить, в первую очередь проверяйте поле original_transaction_id, оно уникально, если вы обнаружите в своей базе идентичное значение этого поля, то это мошенничество.
Но иногда этого недостаточно.
Для полной проверки после получения ответа в формате JSON от сервера проверки Apple вам следует проверить поле ставки с идентификатором вашего пакета, а также проверить поле Product_id. Я надеюсь вы найдете эту информацию полезной.
Жду ваших комментариев, пожеланий и замечаний.
Теги: #покупка в приложении #iOS #проверка #cydia #побег из тюрьмы #java #разработка iOS
-
Дешевые Видео Конвертеры
19 Oct, 24 -
Лаппо-Данилевский Александр Сергеевич
19 Oct, 24 -
Мраморная Капля
19 Oct, 24 -
Как Работает Робот Atlas От Boston Dynamics?
19 Oct, 24