- PVSM.RU - https://www.pvsm.ru -

Недавно я рассказывал о том, как защитить своё приложение с помощью валидации покупок на своём сервере [1]. Через пару дней после публикации поста этот вид защиты научились обходить. Да, в чистом виде валидация через сервер разработчика не работает. Её надо улучшать, и ниже я расскажу вам как.
Признаю, когда писал первый свой пост, я холодно отозвался о методе защиты предложенном Apple [2]. Мол, их защита уязвима, потому что они всё еще делают проверку на своём сервере. Таким образом, если смогут этот сервер обмануть — защита будет сломана у всех приложений, которые ей пользовались. Звучит разумно, но, если присмотреться, шанс такого сценария не так уж и велик, потому что VerificationController — это не только отправка запроса на сервер и проверка результата.
Вот какие проверки входят в VerificationController:
SKPayment и в чеке покупки.На github уже есть немного допиленная версия ValidationController-a: github.com/evands/iap_validation [3]. От штатной она отличается тем, что в ней уже реализованы base64 кодирование-декодирование и сделаны удобные делегаты, в которых можно включать платную функцию.
Если написанного выше вам кажется недостаточно и вы хотите добавить что-то своё в защиту приложения, могу посоветовать хорошую книгу по этой теме: Hacking and Securing iOS Applications: Stealing Data, Hijacking Software, and How to Prevent It [4]. Однако не стоит увлекаться, вы можете добавить слабое звено к уже имеющейся защите и сделаете только хуже.
Пару дней назад магазин вышла версия 2.2.1 моего приложения [5]. И у меня есть немного статистики. Нынешние методы взлома не джейлбрейкнутых устройств доходят до провеки соответствия полей чека полям SKPayment и фэйлятся. Приятным сюрпризом для меня было и то, что ломалки для джейлбрейкнутых устройств тоже не могут провести покупку, вместо этого приложение падает в момент валидации. А это значит, пока защита работает, и работает хорошо, посмотрим сколько времени потребуется чтобы её сломать. :)
Автор: mOlind
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/12557
Ссылки в тексте:
[1] как защитить своё приложение с помощью валидации покупок на своём сервере: http://habrahabr.ru/post/148638/
[2] методе защиты предложенном Apple: http://developer.apple.com/library/ios/#releasenotes/StoreKit/IAP_ReceiptValidation/_index.html
[3] github.com/evands/iap_validation: https://github.com/evands/iap_validation
[4] Hacking and Securing iOS Applications: Stealing Data, Hijacking Software, and How to Prevent It: http://www.amazon.com/Hacking-Securing-iOS-Applications-Hijacking/dp/1449318746
[5] версия 2.2.1 моего приложения: http://itunes.apple.com/app/galileo-offline-maps/id321745474?mt=8
Нажмите здесь для печати.