3

API呼び出しを行う必要のあるAndroidアプリケーションがあるとします。デプロイされたアプリケーションを認証して、許可されていないクライアントがAPIを使用できないようにしたい。

私はアプリケーション内に何でも置くことができます-要求に署名するHTTPヘッダー、ナンスを完備。ただし、誰かがアプリケーションを逆コンパイルすると、署名や共有シークレットを生成するためのアルゴリズムなど、認証方法を複製できるようになります。JavaとAndroidでは、これは実行不可能ではありません。

回避することは可能ですか?おそらくそうではありませんが、暗号化には解決策がないことを確認したかったのです。

4

1 に答える 1

3

この問題の解決策はありません。サーバーが「あなたの」クライアントと通信していることをサーバーが知ることはできません。合理的に認証できるのは、アプリケーションではなくユーザーだけです。特定の安全なハードウェアデバイスを合理的に認証することも可能ですが、これは非常に費用がかかり、クライアントが使用されていることを保証するものではありません。これは、ユーザーが安全なハードウェアデバイスの1つにアクセスできることを示しているだけです。

これはSO全体で何度も議論されてきました。これらの投稿は問題について議論し、これらの議論の多くへのリンクを示します。

上記の投稿はiOSの観点から組み立てられていますが、問題は普遍的です。

于 2013-02-13T16:42:49.787 に答える