Лучшим решением на данный момент кажется проверка транзакций IAP с использованием внешнего сервера, а затем отправка обратно какого-либо ключа для конкретного устройства, чтобы разблокировать платный элемент, который может быть сгенерирован только на этом сервере. Это не является пуленепробиваемым, но это должно сделать ваше приложение очень устойчивым к любой системе взлома IAP общего назначения; кто-то, кто хотел бы взломать ваше приложение, в значительной степени должен был бы разработать кряк специально для него. (что намного сложнее, далеко за пределами досягаемости большинства людей, использующих IAP Cracker)
Вот что вам в основном нужно сделать:
- Разработайте свое решение для обеспечения безопасности в приложении; своего рода уникальный ключ, который разблокирует ваши дополнительные функции. Если добавленная функциональность принимает форму файла данных, то это может быть ключ шифрования для расшифровки этого файла, если все это в коде, то это немного сложнее, но существует множество творческих решений (например, зашифрованные строковые константы). Что бы это ни было, оно должно полагаться или проверять наличие некоторого фрагмента данных, который он получит с вашего веб-сервера.
- Измените код обработки IAP, чтобы при обнаружении обработанной транзакции он отправлял сведения об этой транзакции на ваш веб-сервер и возвращал уникальный ключ, необходимый на шаге 1.
- Напишите простой скрипт на своем веб-сервере, который принимает детали транзакции, проверяет их с помощью Apple (подробности о том, как работает проверка получения, см. в документации разработчика — довольно простой запрос JSON) и после успешной проверки возвращает ключ из шага 1.
(см. текст после EDIT ниже для дополнительной проверки, которую необходимо выполнить сейчас на шаге 3)
В вашем случае, поскольку ваше приложение уже было взломано, и вы пытаетесь деактивировать людей, которые незаконно получили ваш элемент IAP, вы должны добавить эту функцию в новую версию своего приложения, а затем вызвать restoreCompletedTransactions в первый раз, когда новый версия была запущена для повторной проверки / повторной активации покупок для ваших законных пользователей и блокировки всех остальных.
Однако я должен добавить, что это МНОГО работы — нам понадобилось пару недель программистского времени, чтобы заставить его работать гладко, хотя сейчас есть открытый исходный код, который будет обрабатывать большую часть шаги 2 и 3 для вас. Для этого шага повторной активации также требуются затраты на поддержку и PR — неизбежно некоторые люди изменят учетные записи iTunes или будут без подключения к Интернету или что-то в этом роде, и они, вероятно, будут очень раздражены, даже ненадолго потеряв доступ к чему-то, за что они законно заплатили. .
Вам нужно взвесить, действительно ли стоит тратить на это время, когда кряк доступен только для пользователей с джейлбрейком (так что около 90% ваших потенциальных клиентов не затронуты) и большинство людей, устанавливающих его, вряд ли будут платить за ваше приложение. в любом случае; не пугайтесь огромного количества пользователей, взламывающих ваше приложение, многие люди с радостью скачают что-то бесплатно, даже если они никогда не будут платить за это. Вероятно, вам было бы лучше посвятить время улучшениям, которые принесут пользу законным пользователям (и побудят больше из них покупать ваше приложение).
РЕДАКТИРОВАТЬ Год спустя это все еще (в основном) точно, но чтобы справиться с объявленным сегодня новым взломом, который перехватывает, а затем повторно отправляет подлинные квитанции, теперь на стороне сервера требуется немного больше работы. (к счастью, если у вас уже настроен сервер проверки, вы сможете сделать это без обновления приложения) Два новых требования:
1) Убедитесь, что идентификаторы продукта (как идентификатор приложения, так и идентификатор продукта IAP) в расшифрованной квитанции, которую вы получаете с сервера Apple, действительно соответствуют продукту, который покупает пользователь.
2) Убедитесь, что идентификатор транзакции в квитанции (или идентификатор транзакции восстановления для квитанции восстановления) никогда ранее не использовался, путем ведения журнала ранее использованных идентификаторов транзакций.
Тем не менее, даже несмотря на то, что сейчас взлом IAP доступен для пользователей, не взломавших систему, моя основная мысль остается в том, что это может быть больше проблем, чем пользы — чтобы окупить количество времени, которое вы потратите на реализацию и поддержку совершенно неинтересного пакета кода. , вам нужно было бы получить МНОГО дополнительных продаж от людей, которые, в конце концов, были настолько не склонны платить за ваш продукт, что были готовы поставить под угрозу безопасность своего iPhone, чтобы избежать этого.
person
Ertebolle
schedule
20.09.2011