2016-07-11 12 views
1

APIを使用してJSON配列を取得したいとします。作成したAPIはうまく機能しますが、AndroidアプリでAPIを使用しているときに心配しています.APKをデコンパイルしてAPIにアクセスする方が簡単かもしれません。 Androidアプリケーションであるため、IPによるアクセスを制限することはできません。API経由でAndroidアプリケーションからGETリクエストを保護

しかし、私たちはそのAPI PHPファイルへのアクセスを保護したいと思います。サーバー側でアプリケーションが作成したプル要求を認証する方法はありますか?

注:Amazon EC2インスタンスを使用しています。私はここにファイルまたは私たちのサーバーへの直接アクセスを投稿しません。

+0

私たちはあなたを助けることができるいくつかのコードを提供できますか? – Mistalis

+0

残りのAPIを保護する方法はありません。 deguを逆コンパイルから保護するためのプロガードまたは商用のソリューションを使用してください。 – hanbumpark

+0

誰かがあなたのAPKを完全にリバースエンジニアリングすることができれば、そのAPK内に実装されたセキュリティは本当に安全ではありません。 – apokryfos

答えて

2

あなたはPackageManagerクラスhttp://developer.android.com/reference/android/content/pm/PackageManager.html

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures; 
for (Signature sig : sigs) { 
    Log.i("MyApp", "Signature hashcode : " + sig.hashCode()); 
} 
を使用して、このようAPKの署名署名にアクセスすることができます 我々はAPKがあるかどうかを識別するために、私たちのデバッグキーのハッシュコードと比較し、またはキーを解放するためにこれを使用することができます

デバッグAPKまたはリリースAPK、または他の署名で署名されたものです。

誰かがあなたのapkを難読化しようとすると、アプリの署名が変更されます。

あなたがAPIに変更を加える必要があり、あなたはそのサーバがAPI呼び出し が本物であることを確認することができますので、RESTfulなAPIでアプリの署名 を送信する必要があります。

また、難読化が難しくなるようにビルド中にアプリ内でproguardを有効にする必要があります。

希望に役立ちます。 乾杯!

+1

優れたコメント。 *ただし、*あなたのAPIやクライアントサイドでの実装では、「あいまいさを介したセキュリティ」を実装しようとしないでください。クライアント側は決して「信頼できる」ものではありません。 APIを慎重に設計し、ホスト側の実装を「強化する」必要があります。クライアントが何らかの理由で「完全に危険にさらされている」、または「不正である」 」 –

関連する問題