web-dev-qa-db-ja.com

iOS 8,9のNSUserDefaultsはどの程度安全ですか?

アプリ内購入プログラミングガイドでは、アプリ内購入をNSUserDefaultshere に永続化できるとしています。しかし、私は この記事 が安全ではなく、その中のデータに簡単にアクセスして変更できると言っています:

NSUserDefaultsは、暗号化なしでバイナリ形式でplistに保存され、アプリのディレクトリに保存されます。つまり、「noobiest」のユーザーでも、NSUserDefaultsを5分間いじることができます。

それが本当であれば、ユーザーはNSUserDefaultsを使用して永続化されるアプリ内購入として提供されるものを無料で簡単に入手できます。

記事はiOS 8,9でも正しいですか?正しい場合、アプリ内購入をどのように維持しますか?私は簡単な解決策を好む。領収書などの検証は行いません(したくありません)。

15
Rasto

他の人が言ったように、アプリ内購入のようなUserDefaultsや、明らかにパスワードのようなものに機密データを保存しない方が良いでしょう。ハイスコ​​アのようなものでさえキーチェーンに保存されるので、不正行為をすることはできません。

Appleのドキュメントは古くなっており、UserDefaultsはアプリの購入では間違いなくIMOである機密データを保存する方法ではないため、変更する必要があると思います。

言語設定、音量設定などの基本的なものをUserDefaultsに保存するだけです。

機密データを保存する場合は、キーチェーンを使用する必要があります。さて、キーチェーンAPIは非常に扱いにくいと思いますが、GitHubには2つの優れたヘルパーを使用できます。

1) https://github.com/jrendel/SwiftKeychainWrapper

2) https://github.com/matthewpalmer/Locksmith

個人的には、最初のものをより簡単で使いやすいものとして使用しています。それは文字通りあなたのデータを保存するタスクをUserDefaultsと同じにします。 Swiftファイルをプロジェクトにコピーするか、CocoaPodsを使用するだけで準備完了です。

2つ目はより高度で複雑ですが、それでも優れています。これは、必要なものの選択であり、キーチェーンAPIをどの程度理解しているかにすぎません。

キーチェーンについて覚えておくべきことの1つは、アプリを削除してもデータが保持されることです。

すべてのクレジットは、それぞれのラッパーの両方の作成者に提供されます。

お役に立てれば

28