7

アプリケーションが AIDL を使用してリモート サービスを呼び出す場合、セキュリティは提供されますか? それとも、単に悪意のあるアプリケーションがデータを読み取れるようなものですか?

4

4 に答える 4

3

Android では、通常、あるプロセスが別のプロセスのメモリにアクセスすることはできません。

AIDL インターフェイスを使用してアプリケーションにバインドすると、システムはそれらのプロセス間の接続を確立します。したがって、AIDL インターフェイスを介して共有される情報を読み取ることができるのは、これら 2 つのアプリケーションだけです。

確認したい場合は、 で追加のチェックを行ってonBind(Intent intent)、接続しているのが自分のアプリケーションであることを確認する必要があります。

ヒント: このページの最初の部分を読んでください: http://developer.android.com/guide/components/aidl.html

于 2012-09-06T06:52:46.440 に答える
1

メソッドをいつでもフィルタリングして、許可されるパッケージを制限できます。パッケージに権限がない場合は SecurityException をスローします

Collection<String> callingpackages = getCallingPackages();

if(!callingpackages.contains("yourpackagename"){
//Throw securityException.
}

そして getCallingPackages

private Collection<String> getCallingPackages() {
     int caller = Binder.getCallingUid();
     if (caller == 0) {
         return null;
     }
     return Lists.newArrayList(mContext.getPackageManager().getPackagesForUid(caller));
 }
于 2012-09-06T06:23:21.147 に答える
1

セキュリティの例serviceby signature、 using 、同じ署名android:protectionLevel="signature"(同じキーストア)に署名するアプリのみがサービスにバインドできます

アプリケーションサーバーAndroidManifest.xml

<manifest ...>

    <permission
        android:name="my.MyCustomPermission"
        android:protectionLevel="signature" />

    <application
        ...>

        <service
            ...
            android:permission="my.MyCustomPermission">
            ...
        </service>
    </application>

</manifest>

AppClientAndroidManifest.xml

<manifest ...>

    <uses-permission android:name="my.MyCustomPermission"/>

    <application
        ...
    </application>

</manifest>
于 2021-01-28T02:55:07.597 に答える