Android应用安全测试失败!...也就是说,组件不受保护。存在意图过滤器

Ami*_*dav 1 security android intentfilter

我们的客户报告了有关某些 Activity 和 BroadcastReceiver 的安全问题。

安全测试结果正在谈论

(com.****.*****.Activity / BroadcastReceiver) is
not Protected.
An intent-filter exists.
Run Code Online (Sandbox Code Playgroud)

常见的是都包含意图过滤器

请建议我该怎么办?

Pra*_*ate 5

您可以为清单中的活动设置 android:exported="false" :

\n\n
\n

android:exported :\n 此元素设置该 Activity 是否可以由其他应用程序的组件\n 启动\xe2\x80\x94 如果可以,则为“true”,如果不能,则为“false”。如果为“false”,则该活动只能由同一应用程序的组件或具有相同用户 ID 的应用程序启动。如果您使用意图过滤器,则不应将此元素设置为“false”。如果您这样做,并且应用尝试调用该 Activity,系统\n 将抛出 ActivityNotFoundException。相反,您应该通过不为其设置意图过滤器来阻止其他应用程序调用该活动。

\n\n

如果您没有意图过滤器,则此元素的默认值为“false”。如果您将元素设置为“true”,则任何知道其确切类名的应用都可以访问该活动,但当系统尝试匹配隐式意图时,该活动不会解析。

\n\n

此属性并不是限制活动暴露给其他应用程序的唯一方法。您还可以使用权限来限制可以调用该活动的外部实体(请参阅权限属性)。

\n
\n\n
<activity\n        android:name=".activities.YourActivity"\n        android:exported="false" />\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以对 BroadcastReceiver 执行相同的操作。

\n