問題タブ [android-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
8078 参照

android - Androidマニフェストで必要な権限を宣言しているにもかかわらず、デバイスから電話番号を取得できません

プログラムでデバイスから電話番号を取得しようとしています。私は次のコードを試しています:

マニフェスト ファイルで以下のアクセス許可を宣言しました。

しかし、それでも私のアプリケーションはクラッシュし、スタック トレースは次のようになります。

誰かが私がやっている間違いと、なぜこのクラッシュが発生したのかを教えてください。すべての提案を歓迎します。

0 投票する
3 に答える
1811 参照

android - 暗黙の意図を持つカスタム権限

Android のセキュリティ モデルを考慮して、ブロードキャスト レシーバーでカスタム アクセス許可を使用しようとしています。

私がやったこと

受信機のカスタム許可を宣言したため、受信できるブロードキャストが制限されています。マニフェストからのいくつかのコード:

ここで、レシーバーUpdateUserReceiverは、アクセス許可「abc」を使用するコンポーネントからのブロードキャストのみを受信することを期待しています。

ブロードキャスト送信コード:

ブロードキャストを送信するアクティビティ:

質問 1 : ご覧のとおり、アクティビティは、アクティビティからのブロードキャストを受信できるように、受信者が宣言したパーミッションをどこにも使用しません。しかし、それでもレシーバーが呼び出されます。よくわかりませんが、暗黙のインテントの使用が原因であると思われます。何か案は?

質問 2 : アプリ レベルで宣言されたパーミッション タグと、レシーバー内の android:permission タグの違いは何ですか? 受信者がブロードキャストを受信することを誰もが期待できるようになる前に許可を強制する2番目の使用を理解していますが、なぜ最初のものが必要なのですか。このシナリオに必要ですか、それとも削除できますか。いずれにせよ、受信機がブロードキャストを受信することを確認しました。

0 投票する
0 に答える
684 参照

android - Android 仮想デバイスは現在エミュレーターで実行されており、appuse で削除できません

エミュレーターが AppUse で実行されていなくても、AVD ファイルを削除しようとするとエラーが発生します。

Android 仮想デバイスは現在エミュレータで実行されており、削除できません

それを解決する方法は?

エラー

0 投票する
2 に答える
1298 参照

android - Android: AIDL に代わる安全な IPC?

私がやろうとしているのは、デバイスにインストールされた 2 つのアプリケーション間で軽量で安全なIPC プロトコルを実装することです。Serviceクライアント アプリは、サービス アプリで実行されているコマンドとクエリを送信し、計算結果を受け取ることができる必要があります。

アプリの関係:両方のアプリのソース コードは私の管理下にありますが、アプリの署名は異なります (交渉不可)。

セキュリティ要件:サービス アプリは、そのサービスを単一のクライアントに提供する必要があります。クライアントのアプリケーション ID (パッケージ名) は既知で一定です。

試したこと:双方向Messenger通信方式で IPC を実装しようとしました (このブログ投稿と同様)。このアプローチは問題なく機能しますが、大きな問題が 1 つUIDあります。クライアントを取得する方法が見つからないため、セキュリティ要件を満たすことができません。

Serviceサービス アプリケーションの次のコードについて考えてみましょう。

ここでの考え方は、クライアント アプリがメッセージを thisServiceに送信するときに、ローカルの「コールバック」MessengerreplyTosent のメンバーに入れるというものMessageです。次の状態のドキュメントMessenger:

注: 下の実装は、通信を実行するために使用される Binder の単純なラッパーです。

だから私はどうにかして返されたBinderMessenger#getBinder()をクライアントのUIDにマップできると思っていましたが、現在問題が発生しています:

  1. Messenger#getBinder()キャストできないIBinderを返しますBinder
  2. クライアントの への参照を取得できたとしてもBinder、メソッドBinder#getCallingUid()static引数を受け入れません...

したがって、この特定の実装を安全に機能させるには、クライアントによって作成された特定のコンテンツまたは特定UIDのコンテンツに基づいて呼び出し元を取得する方法を見つける必要があります。Android のセキュリティ アーキテクチャは を中心に構築されているため、(またはパッケージ名) へのマッピングへの直接的なアプローチがないのは奇妙に思えます...では、どうすればこれを行うことができますか?MessageMessengerBindersBindersUIDs

おまけの質問: AIDL を除いて、Android で上記の要件を満たす IPC 手法は他にありますか?

0 投票する
2 に答える
700 参照

android - 他のアプリがブロードキャストを自分の BroadcastReceiver に送信できないようにする

broadcastReceiverカスタム アクションを使用して、サービスの 1 つから送信されたブロードキャストを受信するマニフェストに登録しています。すでに動作していますが、セキュリティ上の理由から、他のアプリが偽のブロードキャストを受信機に送信しないようにしたいと考えています。どうやってやるの?

マニフェスト

0 投票する
1 に答える
779 参照

android - Androidアプリでセキュリティを提供するためにアクティビティに権限を追加する(Androidでのアクティビティバイパスを回避する)

インターネット許可や外部ディレクトリの読み取り/書き込み許可などのアプリケーションの許可を追加する方法を知っています

しかし、アクティビティのバイパスを避けるために、各アクティビティにアクセス許可を追加する方法を尋ねています。

どうすれば Android アプリでセキュリティを提供できますか。