1

私はプレミアムを購入することができるシンプルなゲームを持っています。その場合は、Google Datastoreのユーザー表でバージョン番号を0から1に変更します。データベースとセキュアなサーバー通信で機密データを保存する

私は他の多くの電話も持っていますが、これが妥協すると本当に重要なのはこれだけです。

これを安全に行う唯一の方法はサーバー側で行うことですが、ユーザーがプレミアムを購入したことをどういうわけかサーバーに伝える必要があると言われています。 APIとは、サーバー上で完全には実行されていないことを意味します。

次のように私は私の通信を保護:

  1. をユーザーIDでDBに格納し、アクセストークンを作成デシベル
  2. に保存し、それをハッシュ、ユーザ名/
  3. サーバーに渡す塩パスを送ります、クライアント
  4. に戻りトークンは、APIへのすべての呼び出しは、トークンが添付

これも目を意味している必要があり、好みにトークンを保存しましたユーザーはプリファレンスからトークンを取得するだけで、自分の希望するAPIエンドポイントを呼び出すことができます。おそらく、私はこの自己を作ったので、私はoauthプロセスの一部を欠いているかもしれませんが、何のステップが欠けていますか?それはリバースエンジニアリングに対して非常に脆弱だと感じているだけです。

他の誰も私のAPIを呼び出せないようにするにはどうすればよいですか?それが不可能な場合は、フローをより安全にするために何を追加できますか?

+0

、また、あなたのデータベースに暗号化を適用することができます。リンクは https:// guardianprojectです。info/code/sqlcipher/ –

答えて

0

ユーザーがサインインするたびにユーザーが購読しているかどうかを確認するバックエンドサービスを持つことが理想的です。

ユーザーが携帯電話を切り替える可能性があるため、ローカルストレージを使用することはお勧めしません(AndroidからiOSまで)。

ユーザーが購入を完了したら、APIにリクエストを送信し、バックエンドはGoogleマーチャントのDB(またはiOS販売者)に実際に購入したかどうかを確認する必要があります。 この場合、領収書ID、OSタイプ(iOSまたはAndroid)、有効期限付きのエントリをバックエンドDBに作成する必要があります。 あなただけのバックエンドで2エンドポイントが必要になります。

  1. purchaseDone() - これは商人DBを確認した後、バックエンドDBでのOSの種類を登録します。

  2. isSubscriptionActive() - 真偽の応答です。 これは、Google/iOS販売者を確認する必要があります。ユーザーがログインするたびにこれを呼び出す必要があります(購入が期限切れの場合は、ローカルDBのレコードも削除してください)。あなたのバックエンドサービスの

いくつかの有用なリンク:上記のすべてのものの上に https://developers.google.com/android-publisher/api-ref/purchases/subscriptions

https://developers.google.com/android-publisher/api-ref/purchases/products

+0

私が必要とする他のすべての情報とともに、ユーザーがサインインするたびに、ユーザーがサブベッドに入っているかどうかを確認します。これは、 "ハッカー"がアクセントケーキを持ってきたら、それを持ってAPIを使って呼び出すことができるという私の懸念に役立ちません。私のデータベースはクラウド上にあるので、ローカルストレージはありません。プリファレンスのみ(アクセストークンをどこかにローカルに保存しなければならない、またはユーザーがアプリケーションを起動するたびにサインインする必要があります) –

+0

access_tokenの有効期限はありますか)有効期間が5分を超えないようにしてください(アマゾンのようなバックエンドサービスは通常5分を超えません)。あなたのaccess_tokenが期限切れになったら、あなたはidとパスワード(Basic auth)でそれを取り消すべきです。ハッカーがアクセストークンを取得した場合でも、APIビジネスロジックは、バックエンドDBにエントリを作成する前に、Googleマーチャントサーバーで実際に購入したかどうかを確認する必要があります。ハッカーが有効期限内にアクセスできる可能性は低いです。さらに安全にするために、SALTとProguardでアプリを難読化してください。 –

+0

Cool、Illユーザーが購入したかどうかを確認する方法を調べる –

関連する問題