私は現在、Android=アプリ内決済を実装しており、どの攻撃ベクトルに注意すべきか疑問に思っています。
サーバーで生成されたコンテンツを表示する単純なアプリケーションがあります。ユーザーがアプリ内で追加のアクセス権を購入できるようにしたいのですが、成功したトランザクションをサーバーに通信する方法を知りたいです。
Androidアプリ内決済の仕組みの概要:
詳細はこちら: http://developer.Android.com/guide/market/billing/index.html
私の現在の計画は、完全なトランザクションレコードをサーバーに送信し、サーバーの公開キーと照合することです。
私が持っているいくつかの質問:
私は個人データや極秘データを保護していませんが、攻撃者にとって簡単にしたくはありません。
私が目にする可能性のある欠陥は、あなたが2番目の質問で尋ねるものです。サーバー側のすべてを再確認し、クライアントで行われたすべてのもの(自分のアプリからのものであっても)を信頼できないものとして扱うことをお勧めします。この特定のケースでは、固有の問題はありませんが、クライアント側では、欠陥が発見された場合にのみドアが開いているかどうかをチェックします。
Nonceは、* nixシステムがパスワードを保管する方法と同様に、トランザクションのソルトのように機能します。ナンスは、キーで暗号化された値にエントロピーを追加するために使用され、2つのトランザクションが暗号化されて同じ署名が作成される可能性や、その他の同様の暗号攻撃が大幅に排除されます。
私は偏執狂として、あなたが両替するお金について話しているとき、HTTPSで通信する必要があると言います。平文の送信で、スターバックスで完全なトランザクションレコードを傍受し、それらを自分のトランザクションとして送信するなど、厄介なアクションの中で何ができなくなりますか?