Как безопасно включить функцию после проверки покупки в приложении - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю над приложением для iOS, но если здесь есть ответ, оно может относиться и к другим платформам.

Существует два основных способа проверки покупки в приложении: локально и на стороне сервера.На стороне сервера метод задокументирован здесь .(В настоящее время я не могу найти документы для локального метода.)

Допустим, я проверяю покупку на стороне сервера.Мой вопрос о том, что происходит после этого, чтобы включить приобретенные функции.Я не вижу документации по этому вопросу.Я пропускаю это?

Я представляю два или три шага:

  1. Сервер отправляет HTTPS-ответ в приложение iOS, говоря «да, вы совершили покупку X».
  2. Приложение переворачивает некоторую логическую переменную в памяти, чтобы активировать приобретенные функции.
  3. [Возможно] Приложение сохраняет это состояние в локальном хранилище, поэтому ему не требуется повторная проверка квитанции черезИнтернет каждый раз, когда он запускает.

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

Пример возможных уязвимостей: (опять же, все они, вероятно, требуют полезной - для хакера - ОСядро)

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

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

1 Ответ

0 голосов
/ 23 сентября 2019

Не знаю, есть ли здесь «правильный» ответ, поскольку вы обрисовали его довольно хорошо:

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

Если был официальный способ справиться с этим, то он просто стал целью для взлома.

Большинство приложений, которые я видел (даже большие), хранят данные в локальном хранилище для определения статуса покупки.Но ... вы можете хранить эти данные в коротком кэше и обновлять их в фоновом режиме каждые 5 минут или около того.Таким образом, хакеру потребуется перезаписывать его каждые 5 минут, что делает обычное использование довольно непрактичным.

Если у вас нет высоких затрат на поддержку пользователей (например, Spotify оплачивает расходы на лицензирование), тогда, вероятно, есть более выгодные области для инвестиций, чем эта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...