保护应用程序服务

详细描述

服务通常用于后台处理。 与BroadcastReceivers和应用程序 activities 一样,应用程序服务可以由外部应用程序调用,因此应该由权限和导出标志保护。

建议

服务可以具有可以从外部调用者调用的多于一个方法。 可以为每个方法定义任意权限,并通过使用checkPermission()检查调用包是否具有相应的权限。 或者,可以通过使用AndroidManifest中定义的权限来定义单独的服务和访问权限。

当调用具有敏感数据的服务时,验证正在调用正确的服务,而不是恶意服务。 如果您知道要连接的组件的确切名称,请在用于连接的意图中指定该名称。 另一种方法是再次使用checkPermission()来验证调用包是否具有接收所需Intent所需的权限。 用户在安装期间向应用程序授予权限。

下面是一个例子,声明并需要在访问com.example.MyService.时使用自定义权限

  1. <permission android:name="com.example.mypermission"
  2. android:label="my_permission" android:protectionLevel="dangerous"></permission>`
  1. <service
  2. android:name="com.example.MyService"
  3. android:permission="com.example.mypermission">
  4. <intent-filter>
  5. <action android:name="com.example.MY_ACTION" />
  6. </intent-filter>
  7. </service>

CWE/OWASP