6

アプリ内購入を使用して、アプリの一部の機能のロックを解除する予定です。これを行う最も安全な方法は何ですか?

もともと私は Bool を設定する予定でしたNSUserDefaults:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isPro"];

NSUserDefaultsしかし、ユーザーがアプリ内購入を実行する必要がないように、「ハック」を介してこの値を設定する可能性があるかどうかはよくわかりません (アプリによって直接管理されるのではなく、iOS によって管理されます)。フルバージョンを入手するために。

これを処理するためのベストプラクティスは何ですか?

4

4 に答える 4

8

はい、アプリケーションの設定を変更するのは比較的簡単です。しかし、それは本当に重要ですか?iPhoneのファイルシステムをクラックして開き、構成ファイルを変更して1、2ポンドを節約することをいとわない人は、そうできない場合にお金を使う傾向がある人ではないことに賭けます.

于 2013-01-03T12:31:42.010 に答える
3

難読化によるセキュリティは、ここで行う最も簡単な方法です (たとえば、var に「isPro」という名前を付けないでください。おそらく、その値を単純な BOOL にするのではなく、「魔法の」整数にする必要があります。絶対確実ではありませんが、別のスピード バンプになります)ひび割れに。

を使用する代わりにNSUserDefaults、ファイルをアプリのファイル システムに保存し、アプリの起動時にその内容を確認することもできます。

ただし、時間と手間をかける価値があるかどうかはわかりません。

于 2013-01-03T12:53:22.453 に答える
1

キーチェーンに保存することもできますが、ジェイルブレイクされたデバイスでは、それを読み取って変更するのも簡単です. したがって、データを暗号化する必要があります。バイナリをスキャンして、暗号化パスワードがアプリで簡単に見つからないことを確認してください。

于 2013-01-03T12:21:50.280 に答える
0

私はいくつかの問題に遭遇し、アプリ内購入を安全に保存するための 2 つの一般的な方法を見つけました。

1) NSUserDefaults の安全なバージョンを使用する:

a) 「安全な NSUserDefaults」。このバージョンの NSUserDefaults は、保存されたシークレット アイテムのハッシュを生成し、後でアイテムのこのハッシュの検証を提供します。したがって、ユーザーがデフォルトの .plist を「ハッキング」するこの状況に簡単に対処できます。

ここをチェックしてください: https://github.com/matthiasplappert/Secure-NSUserDefaults

b) 「SecureNSUserDefaults」。AES 暗号化を使用した NSUserDefaults。ここでの私のアドバイスは、購入のために安全なブール値を保存するだけでなく、支払いが完了したかどうかを示すための難読化された文字列です。

ここをチェックしてください: https://github.com/nielsmouthaan/SecureNSUserDefaults

2) キーチェーンの使用

a) " RSSecrets " KeyChain にキーと値の項目を格納する単純なクラス。ここでの議論も参照してください:アプリのキーチェーンにアプリ内購入レシートを保存する

プロジェクトを確認してください: https://github.com/jeffargast/RSSecrets

b) " STKeychain " ほとんどの場合、このクラスはログイン/パスを KeyChain に保存するために使用されますが、MKStroreKit (iOS デバイスで人気のあるアプリ内購入 StoreKit) のプロジェクトでは、実際にアプリ内購入を保存するためにこのクラスを使用します。

ここをチェック: https://github.com/ldandersen/STUtils/blob/master/Security/STKeychain.h

PS私は自分のプロジェクトでこのクラスをまだ使用していませんが、「RSSecrets」を使用することを考えています

于 2014-07-02T01:17:49.523 に答える