3

実行時の Android パーミッションの適用に関する以前の質問に続き、Android には、呼び出し元 (クライアント) アプリが所有するパーミッションをアプリが検証できるさまざまな方法があることがわかりました。これには、checkCallingPermission、checkCallingOrSelfPermission、checkCallingUriPermission、checkCallingOrSelfUriPermission、checkPermission、checkUriPermission などの呼び出しが含まれます。Androidのドキュメントを調べた限り、実行時のアクセス許可チェックに関連するこれらの呼び出しのみを見つけることができます。私の質問:

  • 呼び出し元のアクセス許可を動的に確認する (前述の呼び出しを使用するのではなく) 他の方法はありますか? そのような電話がある場合は、情報/リンクを提供するか、それらをリストしてください。
  • checkCallingOrSelfPermissionの説明に は、

現在 IPC を処理していない場合は、独自の権限が付与されます。注意して使用してください!

これは、呼び出しプロセスへの (危険な) パーミッションの委任を促進し、(不用意に使用すると) 特権のエスカレーションにつながる可能性があるため、危険に思えます。これが権限昇格攻撃につながる可能性があると言っているのが正しいかどうか教えてください。

  • プロセス (実行中のアプリ) が特定のアクセス許可を持っているかどうかを確認する理由がわかりませんでした(それが何をする資格があるかをよく知っているでしょうか?)。この特定のメソッドの設計の背後にある直感を教えてください: checkCallingOrSelfPermission. (簡単に言えば、なぜ/いつ checkCallingOrSelfPermission が必要なのですか?)
4

1 に答える 1

3

Android には 2 種類の権限チェック メカニズムがあります。

1 つはプロセスごとのランタイム動的チェックで、もう 1 つはパッケージごとの静的チェックです。あなたが言及したのは、ランタイム動的なものがContextに実装されていることです。別のバージョンはPackageManagerにあります。-checkPermission _

あなたがしたいのは、特定のパッケージに特定の権限があるかどうかを確認することです.checkPermissionが答えです。より詳細な説明については、Android Developer Site にこの件に関する記事があります。- http://developer.android.com/guide/topics/security/permissions.html#declaring

多くの場合、動的パーミッション チェック メソッドを使用する必要はありません。特定のクライアント、リモート サービス、または一部のウィジェットとプライベート ファイルを共有するために 1 つのプロバイダーを使用している場合にのみ必要です。これは、インテントまたは IPC を介した一時的なパーミッション付与システムに関連するものです。 .

そして、 android: permisson の複数のアクセス許可に関する以前の質問に対して、もう 1 つは薄くなります。アプリがマニフェスト内で必要なアクセス許可のリストを定義する方法があります。

チェック - http://developer.android.com/guide/topics/manifest/uses-permission-element.html

于 2013-08-26T02:46:41.913 に答える