2017-05-19 1 views
-1

Un problème de sécurité a été signalé par notre client à propos de l'activité et de BroadcastReceiver.Le test de sécurité de l'application Android a échoué! ... En disant, le composant n'est pas protégé. Un filtre d'intention existe

Le résultat du test de sécurité parlait

(com.****.*****.Activity/BroadcastReceiver) is 
not Protected. 
An intent-filter exists. 

Chose qui est commune est que tout contient l'intention filtre

S'il vous plaît me suggérer que dois-je faire?

Répondre

2

Vous pouvez définir Android: pour l'activité exportée = "false" dans votre manifest:

android: exporté: Cet ensembles d'éléments si l'activité peut être lancée par des composants d'autres applications - "true" si cela peut être, et "false" sinon. Si "false", l'activité ne peut être lancée que par des composants de la même application ou des applications avec le même utilisateur ID. Si vous utilisez des filtres d'intention, vous ne devez pas définir cet élément "false". Si vous le faites et qu'une application tente d'appeler l'activité, le système lève une ActivityNotFoundException. Au lieu de cela, vous devez empêcher les autres applications d'appeler l'activité en ne définissant pas de filtres d'intention pour celle-ci.

Si vous n'avez pas de filtres d'intention, la valeur par défaut pour cet élément est "false". Si vous définissez l'élément "true", l'activité est accessible à toute application connaissant son nom de classe exact, mais elle ne se résout pas lorsque le système tente de faire correspondre une intention implicite avec .

Cet attribut n'est pas le seul moyen de limiter l'exposition d'une activité à autres applications. Vous pouvez également utiliser une autorisation pour limiter les entités externes pouvant invoquer l'activité (voir l'attribut Autorisation ).

<activity 
     android:name=".activities.YourActivity" 
     android:exported="false" /> 

Vous pouvez faire de même pour BroadcastReceiver.