Я работаю над приложением для iOS, но если здесь есть ответ, оно может относиться и к другим платформам.
Существует два основных способа проверки покупки в приложении: локально и на стороне сервера.На стороне сервера метод задокументирован здесь .(В настоящее время я не могу найти документы для локального метода.)
Допустим, я проверяю покупку на стороне сервера.Мой вопрос о том, что происходит после этого, чтобы включить приобретенные функции.Я не вижу документации по этому вопросу.Я пропускаю это?
Я представляю два или три шага:
- Сервер отправляет HTTPS-ответ в приложение iOS, говоря «да, вы совершили покупку X».
- Приложение переворачивает некоторую логическую переменную в памяти, чтобы активировать приобретенные функции.
- [Возможно] Приложение сохраняет это состояние в локальном хранилище, поэтому ему не требуется повторная проверка квитанции черезИнтернет каждый раз, когда он запускает.
Все эти шаги кажутся уязвимыми для атаки на взломанное / взломанное клиентское устройство.Очевидно, что между сложностью взлома и стоимостью покупки в приложении и потенциальным упущенным доходом существует компромисс.Я имею в виду случай, когда приложение более дорогое или популярное, и у него может быть стимул взломать его.
Пример возможных уязвимостей: (опять же, все они, вероятно, требуют полезной - для хакера - ОСядро)
- реальный ответ сервера может быть обнаружен и проверен, а затем подделан для других пользователей
- может быть проверена память приложения и логическая переменная перевернута
- , еслисостояние сохраняется (например, в файле или в хранилище значений ключей по умолчанию пользователя), это состояние может быть изменено
Итак, существуют ли какие-либо методы для смягчения или предотвращения этих взломов?Или компании просто признают, что решительный хакер может похитить программное обеспечение и считать его частью расходов на ведение бизнеса?