1

異なる証明書/キーで署名された 2 つのアプリケーションがあります。

アプリケーション A からアプリ B への (サービスへの)認証された呼び出しを行いたい(そのため、第三者がそのような呼び出しを行うことはできません)。

Android でのこのようなことに対する一般的な解決策は、署名保護レベルを使用したカスタム アクセス許可です。ただし、2 つのアプリが異なる証明書 (異なる会社によって開発された) で署名されているため、私の場合は機能しません。

それで、質問はです。アプリケーション A (またはこの会社が開発したアプリ) のみがアプリ B のサービスを呼び出し/バインドできるようにする場合、この場合のベスト プラクティスは何ですか?

4

1 に答える 1

2

実際にはありません、IMHO。

パーミッションが にsignature基づいていない場合、ユーザーはそれを要求する任意のアプリに付与できるため、パーミッションは役に立ちません。

バインディング パターンでサービスを使用する場合は、呼び出し元のアプリの UID を見つけるために使用できるBinderhasがあります。getCallingUid()いくつかの作業を行うと、その UID のパッケージ名を から見つけることができますPackageManager。パッケージ名をどのように検証するかはあなた次第です (組み込みのホワイトリスト、パッケージの署名を から理解するようにしてくださいPackageManager)。ただし、誰かが APK をいじったり、検証ルーチンをハッキングしたりするのを防ぐことはできません。

于 2013-04-19T18:17:47.113 に答える