9

Rails で JSON REST API を開発しており、これも開発中の Android アプリケーションで使用されます。特定の Android アプリケーションでのみ使用できるように API を保護する方法はありますか?

API は読み取り専用であり、いかなる種類のユーザー関連情報やその他の機密情報も含みません。しかし、合理的な範囲で、悪用を防ぎ、その使用を私たちのアプリだけに制限したいと考えています。

認証トークンを API に簡単に追加してアプリで配布することはできましたが、次のようになります。

  1. BASIC 認証を使用する場合は、おそらく API を SSL に移行する必要があります。
  2. 決心した人が Android APK バイナリを開いて、とにかく認証トークンを明らかにするのはおそらく些細なことです。

この状況は、カフェが店のカウンターに Wi-Fi パスワードを掲示しているのと似ているように思えます。サービスを利用したい人全員に秘密を教えなければならないので、そもそも秘密を持っていてもほとんど意味がないように思えます。

取るべき最も合理的なアプローチは何ですか?

4

1 に答える 1

6

おそらく公開されていないドキュメント化されていない API を保護して、1 つのアプリケーションのみがアクセスできるようにすることは、API を使用することを決定している人々が API を使用するのを阻止したいことを意味します。

API を使用するために可能な限りのことをしようとする人々を意味します。

そうでない場合、Auth トークンを追加することは簡単ではありませんが、API に出くわした人にとっては少なくとも大きな足がかりになります。そして、これを実装することは非常に悪い考えではありません。

この認証はユーザー ベースではなくアプリケーション ベースであり、認証をユーザー入力に依存させたくないためです。要求は、アプリケーションによって純粋に行われる必要があります。

とにかくそうしなければならないことを意味します(ハードコードされたトークンを追加します)。あなただけが、決心した人がアクセストークンとリクエストトークンとメソッドを明らかにすることを非常に困難にします.

状況にもよりますが、SSL とハードコードされたトークンを使用します。

追加のセキュリティ:

  • 定期的にリクエスト トークンを送信するだけでよいアプリケーションに、アクセス トークンをリリースします。つまり、ハードコーディングされたリクエスト トークンをインターセプトする可能性は低くなりますが、セッション ベースのアクセス トークンは期限切れになります。おそらく、アプリケーションのインストールごとにこれを 1 回実行するだけです。
  • 無線で送信する前に、このリクエスト トークンをエンコードします。つまり、人々はあなたのアプリを逆コンパイルする必要があります。
  • コードを難読化します (逆コンパイルをより困難にします)。
于 2013-03-07T14:33:43.753 に答える