Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

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

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

購入情報を検証する

信頼できるサーバー上で、購入情報を検証することを強くおすすめします。ただし、サーバーを使用できない場合でも、デバイスのアプリ内で購入情報を検証することは可能です。

サーバー上で検証する

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

信頼できるサーバー上で購入情報を検証する手順は次のとおりです。

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

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

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

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

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

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

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

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