Android Webサービスを使用するアプリに認証システムを追加する予定です。
アプリがPOST callを使用してサーバーを呼び出す場合、クライアントがURLを見つけられず、自分の投稿を行い、これを私のサーバーに対して使用しようとするのを防ぐにはどうすればよいですか?
保護されたHTTP接続、つまりHTTPSを使用する必要があります。実際の例はありませんが、javax.net.ssl。*パッケージの下のクラスを確認します。ここでは、サーバーがすでにそれをサポートしていると思います。そうでない場合は、サーバーでサポートする必要があります。
アプリがPOST callを使用してサーバーを呼び出す場合、クライアントがURLを見つけられないことを確実にして、自分の投稿を行い、これを私のサーバーに対して使用しようとする方法を教えてください。
SSL/TLSを使用して接続を保護できます。 URLエンドポイントは暗号化されます。クライアントは、ホスト「domain.com」に接続していることを確認できますが、実際のパスはわかりません。 「domain.com/secret.php」
必ず相互認証を使用してください。これは、クライアントデバイスを信頼できないためです。アプリに秘密鍵を含めて、サーバーがチャレンジレスポンスで検証する必要があります。相互認証がなければ、fiddlerなどのWebプロキシを使用してSSLを復号化できます。
Android keystoreを使用して秘密鍵を保存できます。スマートフォンがルート化されている場合、秘密鍵を取得できることに注意してください。以下のリンクは、ルートの作成またはリスト表示が禁止されていることを示していますただし、su
コマンドを使用すると、rootユーザーは他のユーザーに切り替えることができ、その後、自分のキーをリストできます。
キーストアを使用して証明書を保存する方法の詳細: http://nelenkov.blogspot.sg/2012/05/storing-application-secrets-in-androids.html
アプリを危険にさらすために、攻撃者はまず自分の電話をルート化し、秘密鍵を取得し、暗号化アルゴリズムを理解し、通信を復号化し、最後にアプリをシミュレートするクライアントをコーディングする必要があります。これにより、ほとんどの偶発的な攻撃を阻止するための妥当な量のセキュリティが提供されます。