Безопасно ли хранить флаг в NSUserDefaults после покупки через In App Purchase?

У меня есть некоторые функции, которые будут разблокированы только после покупки через покупку приложения.

Замечательно, если я храню значение флага в NSUserDefaults, чтобы проверить, было ли приобретенное приложение или нет?

Безопасно ли хранить флаг в NSUserDefaults, как только покупка осуществляется через In App Purchase?

Ответ 1

Да, это лучший способ. В аренду я хранил в NSUSerDefault в моем нерасходуемом In-App Purchase типа. Поэтому он работает для меня как прелесть до сих пор.

Ответ 2

Нет, это не безопасно.

Содержимое NSUserDefaults хранится в виде простого текста. Они могут быть доступны и изменены с помощью таких инструментов, как iExplorer. Это также работает на устройствах, которые не взломаны.

Это означает, что если вы сохраняете информацию о покупке в NSUserDefaults, пользователи могут разблокировать ваш контент, не совершая фактической покупки.

Чтобы сохранить флаги не так легко, как "взломать", вы можете сделать одно из следующих действий:

  • Сохраните дополнительный соленый хэш вашей сохраненной информации. Используйте хеш для проверки того, что пользователь не изменил информацию. Вы можете найти реализацию этой концепции здесь.

  • Сохраните флаги в цепочке ключей. Подробнее в Apple Руководство по программированию ключей Keychain. Вы можете найти несколько реализаций этой концепции на GitHub, например. Lockbox.

Обновление: Как и в iOS 8.3, доступ к песочнице приложений несколько ограничен. Хотя это добавляет некоторую безопасность, я бы по-прежнему не рекомендовал использовать NSUserDefaults, поскольку доступ к песочнице по-прежнему возможен для джейлбрейк-устройств, приложений, в которых включен обмен файлами iTunes, и, конечно же, устройств, работающих с более ранними версиями iOS.

Ответ 3

Да, это лучший способ. Таким образом, вы можете передавать через флаг, который хранится в NSUserDefault.

Но, Когда вы удаляете приложение с устройства, его значение становится FALSE. Поэтому он снова попросит о покупке. Но он не будет взимать плату с пользователей за то же самое снова.

Приветствия.