6 月 3 日の「#Android11: The Beta Launch Show」にぜひご参加ください。

セキュリティに関するベスト プラクティス

Google Play 請求サービスを設計する際は、このドキュメントで説明するセキュリティ ベスト プラクティスに沿うようにしてください。このガイドラインは、Google Play 請求サービスの全利用者におすすめします。

購入情報を検証する

購入情報を確実に検証するには、Google Play Billing LibraryGoogle Play Developer APIリアルタイム デベロッパー通知を組み合わせて使用する必要があります。購入情報の検証は、信頼できるサーバー上で行うことを強くおすすめします。ただし、サーバーを使用できない場合でも、デバイスのアプリ内で購入情報を検証することは可能です。

サーバー上で検証する

署名検証ロジックをサーバー側で実行することで、攻撃者が APK ファイルをリバース エンジニアリングするのを困難にすることができます。これにより、ロジックでチェックする署名の整合性が保たれます。

信頼できるサーバーで購入の詳細を検証するには、以下の手順を行います。

  1. デバイスとサーバーのハンドシェイクが安全であることを確認します。
  2. 返されたデータ署名と orderId をチェックして、orderId が以前に処理したことのない一意の値であるか確認します。
  3. 処理する INAPP_PURCHASE_DATA がアプリの鍵で署名されているか確認します。
  4. Google Play Developer API の ProductPurchase リソース(アプリ内アイテム用)または SubscriptionPurchase リソース(定期購入用)を使用して、購入レスポンスを検証します。攻撃者が Play ストアの購入リクエストに対して偽のレスポンスを作成できなくなるため、この手順は特に有効です。

ロックフリー コンテンツを保護する

悪意のあるユーザーによってロックフリー コンテンツが再配信されるのを防ぐために、APK ファイルでバンドルしないようにします。代わりに、次のいずれかを行います。

  • コンテンツ フィードなどのリアルタイム サービスを使用してコンテンツを配信します。 リアルタイム サービス経由でコンテンツを配信することで、コンテンツを最新の状態に維持することができます。
  • リモート サーバーを使用して、コンテンツを配信します。

リモート サーバーやリアルタイム サービスからコンテンツを配信すると、ロックフリー コンテンツをデバイスのメモリや SD カードに保存できます。 SD カードに保存する場合には、必ずコンテンツを暗号化し、デバイス固有の暗号鍵を使用してください。

商標侵害や著作権侵害に関する対策を行う

コンテンツの配信や管理にリモート サーバーを使用している場合、ユーザーがコンテンツにアクセスした際は必ずロックフリー コンテンツの購入状況を確認しておきます。これにより、必要に応じて利用を取り消し、侵害行為を最小限に抑えることができます。

自分のコンテンツが Google Play 上で再配信されているのを見つけた場合、速やかに断固たる措置を講じる必要があります。詳細については、著作権ヘルプセンターの著作権に関するよくある質問をご覧ください。