35 votes

Dans Android 6, comment refuser à une application la permission d'accéder au réseau ?

Dans Android 6, l'utilisateur a (enfin !) la possibilité d'approuver ou de refuser des autorisations spécifiques à une application.

Cependant, je n'ai pas trouvé de moyen d'approuver ou de refuser l'accès au réseau, que ce soit via le Wi-Fi ou la connexion de données cellulaire. L'autorisation correspondante apparaît dans "Autres capacités de l'application" et elle n'est qu'informative - apparemment, il n'y a aucun moyen de la modifier.

Voici un exemple avec l'application Chess Free :

screenshot

29voto

Firelord Points 23064

Le mécanisme natif d'Android ne vous permettra pas d'atteindre le succès.

Cody Toombs, de Android Police, l'a très bien souligné dans son article : Android M ne demandera jamais aux utilisateurs la permission d'utiliser Internet, et c'est probablement bien ainsi .

Dans la section Permissions normales et dangereuses du document Aperçu des autorisations a noté Google :

Les autorisations sont divisées en plusieurs niveaux de protection.

Il existe deux niveaux de protection qui affectent les applications tierces : les autorisations normales et les autorisations dangereuses.

  • Normal Les autorisations couvrent les domaines dans lesquels votre application doit accéder à des données ou à des ressources en dehors de la sandbox de l'application, mais où il y a très peu de risques pour la vie privée de l'utilisateur ou le fonctionnement d'autres applications. . Par exemple, l'autorisation de définir le fuseau horaire est une autorisation normale.

    Si une application déclare dans son manifeste qu'elle a besoin d'une autorisation normale, le système lui accorde automatiquement cette autorisation au moment de l'installation. Le système ne demande pas à l'utilisateur d'accorder des autorisations normales, et les utilisateurs ne peuvent pas révoquer ces autorisations.

  • Dangerous Les autorisations couvrent les domaines dans lesquels l'application souhaite obtenir des données ou des ressources qui impliquent des informations privées de l'utilisateur, ou qui pourraient potentiellement affecter les données stockées de l'utilisateur ou le fonctionnement d'autres applications. Par exemple, la possibilité de lire les contacts de l'utilisateur est une autorisation dangereuse. Si une application déclare qu'elle a besoin d'une autorisation dangereuse, l'utilisateur doit explicitement accorder cette autorisation à l'application.

(C'est moi qui souligne)

Que cela soit surprenant ou non, les permissions suivantes font partie de la liste de Permissions normales :

  • CHANGE_NETWORK_STATE - permet aux applications de modifier l'état de connectivité du réseau, c'est-à-dire les données mobiles ;
  • CHANGE_WIFI_STATE - permet aux applications de modifier l'état de la connectivité Wi-Fi ;
  • INTERNET - permet aux applications d'ouvrir des sockets réseau.

Si cela ne suffit pas, vérifiez les permissions gérées par AppOps aquí . Si votre autorisation n'y figure pas, vous ne pourrez rien faire avec elle dans l'interface graphique.

Les méthodes alternatives étant déjà largement couvertes sur ce site, reportez-vous à la rubrique :

12 votes

Merci pour votre réponse. Il est décevant de voir que des fonctionnalités sont paralysées non pas en raison d'impossibilités techniques, mais pour des raisons de marché.

26voto

Milner Points 533

Vous pourriez utiliser NetGuard (voir ma liste de Pare-feu Internet pour d'autres alternatives), qui fonctionne sans Root et vous permet de bloquer l'accès Internet pour les applications de manière sélective (WiFi ou données mobiles, et même toujours ou seulement si l'écran est éteint). Il a été conçu par le développeur de XPrivacy, donc il doit être bon ;)

Netguard Netguard Netguard
NetGuard (source : Google Play ; cliquez sur les images pour obtenir des variantes plus grandes)

NetGuard est open source, donc vous pouvez aussi disponible sur F-Droid .

Mise à jour : Notez que les versions récentes de Netguard incluent Google Ads ainsi que Firebase Analytics - deux choses qui, à mon avis, n'ont rien à faire dans un pare-feu (ou toute autre application de sécurité) - ce qui est probablement la raison pour laquelle il n'est plus mis à jour sur le repo officiel de F-Droid (encore disponible dans la mine avec les avertissements appropriés).

Mise à jour2 : La situation de la mise à jour précédente a été résolue, et les versions récentes de Netguard sont maintenant disponibles dans les deux dépôts - sans ces composants propriétaires.

1 votes

La variante F-Droid de NetGuard a en fait ajouté des fonctionnalités au-delà de celles autorisées dans le Play Store.

0 votes

Peut-il bloquer les publicités in-app ?

1 votes

Si une application se voit refuser l'accès au réseau, elle ne peut pas non plus charger de publicités. La réponse à cette question est donc "oui".

7voto

Baronz Points 389

Il y a des applications vraiment cool qui peuvent le faire sans rooter. Voici deux exemples :

4voto

chris Points 41

Si vous avez Racine accès que vous pourriez également utiliser :

J'ai mis mon appareil à jour vers Android 6.0.1 et jusqu'à présent, les deux semblent fonctionner.

4voto

Grimoire Points 2908

Préambule

Il est peut-être tard, mais je souhaite ajouter mon propre point de vue sur votre question, par souci d'exhaustivité. Cette réponse est un moyen infaillible de bloquer l'accès Internet à une application. Les inconvénients ? Elle ne bloque pas les intentions, elle est compliquée et peut faire planter l'application cible, et elle nécessite les privilèges de Root .

Il a été testé et confirmé pour fonctionner jusqu'à Android 7.1.2.


Justification

Comme l'ont mentionné les autres répondants, toute application qui souhaite accéder à l'Internet doit déclarer l'adresse IP de l'utilisateur. android.permission.INTERNET permission indéniable au sein de son AndroidManifest.xml . Mais comment Android se souvient-il des autorisations demandées par une application ? En les enregistrant dans packages.xml un fichier protégé situé à l'adresse /data/system .

Il va sans dire que quelqu'un comme nous pourrait être intéressé à éditer ledit fichier, dans le but d'ajouter ou de enlever une autorisation, à condition qu'ils disposent des privilèges de Root. C'est notre façon d'interdire l'accès Internet à une application sans VPN ou logiciel pare-feu.


Le site packages.xml fichier

Le site packages.xml liste toutes les applications installées, avec leurs chemins d'accès et leurs autorisations. Chaque application est placée entre l'icône <package></package> Pour les besoins de ma réponse, je vais cibler Nova Launcher de TeslaCoil. La strophe de l'application dans le fichier est la suivante :

    <package name="com.teslacoilsw.launcher" codePath="/data/app/com.teslacoilsw.launcher-1" nativeLibraryPath="/data/app/com.teslacoilsw.launcher-1/lib" publicFlags="944258628" privateFlags="0" ft="16075caace8" it="16075cac965" ut="16075cac965" version="53000" userId="10083" installer="com.android.packageinstaller">
        <sigs count="1">
            <cert index="7" key="3082034d30820235a0030201020204638fbad3300d06092a864886f70d01010b05003057315530530603550403134c726f636b7a35353535204f553d44726f69642046726565646f6d20556e6974204f3d44726f69642046726565646f6d20496e63204c3d556e6b6e6f776e20533d556e6b6e6f776e20433d4c4b301e170d3134313230353030343535375a170d3434313132373030343535375a3057315530530603550403134c726f636b7a35353535204f553d44726f69642046726565646f6d20556e6974204f3d44726f69642046726565646f6d20496e63204c3d556e6b6e6f776e20533d556e6b6e6f776e20433d4c4b30820122300d06092a864886f70d01010105000382010f003082010a0282010100818b312365be3e55f48989d43468880067464eca65aa3ba73305178311fc2a053c143182f6d2ea635b57dc327adf8a5a9b763c03f0a48c38530114e6979358d6bfca37d161ca6fe8bb0d80f061d7b67bc1456cdfc38e0cda2ebd05c48113f701140950f0fe4315de6b95c7504129abb2c1a61f1e4f1229fb83f474dbcd7dc957b84a1b8a2aa0157b223609d77980a3f579c93fbb24a6f9fbb5a8e207cccdf1add616c95c732d5c114c0168fdbd9c00ddf211c2b8886b9498a34f389025802e334f404b7e4eb75f6308f086e5bdac64db10053c7ff8d21a350b941d5394ffbe2bd037139134eb065c2317625e65d3f628aecf7965a0d70b02e68aa8371efd1fe50203010001a321301f301d0603551d0e04160414a4e66b693ecdf3241883e3eed668354e1531ba11300d06092a864886f70d01010b050003820101003992f3f461a290db767911a4a519f035fe0c34e597e2fba2e31371e260bd2fc8f9a93c35e6f06553d02588d2f8453ee784d2ba09a696e66304e3e01f7c6bdf5b2747fc73f79d00379cc94eefa542c8eb308318364df2fa1a9c6a7ef0669d08f7b1f8635d0d4331e2817d5aeb0854760116c29801cf915ef67d5c0e04861cad4fa7b96fe8f9a0baf0cda649cd35a7122142ba38b2d16d9d319a8604a41fe0025d89be87f84ce8fc080ab54c76a96f3d9b70b1a5f5e18e48768e3684bca8a950665e16a6d50cf0045949baebca876d55eeba52ea421f33009872d9d654f8f8caa1bb465d754694d4bf6cb92f3299fbec3781849b37e6ba23ffe3d6c20ecb9bc65d" />
        </sigs>
        <perms>
            <item name="com.android.launcher3.permission.READ_SETTINGS" granted="true" flags="0" />
            <item name="com.google.android.c2dm.permission.RECEIVE" granted="true" flags="0" />
            <item name="com.teslacoilsw.launcher.permission.C2D_MESSAGE" granted="true" flags="0" />
            <item name="android.permission.EXPAND_STATUS_BAR" granted="true" flags="0" />
            <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
            <item name="android.permission.INTERNET" granted="true" flags="0" />
            <item name="android.permission.ACCESS_NETWORK_STATE" granted="true" flags="0" />
            <item name="android.permission.SET_WALLPAPER" granted="true" flags="0" />
            <item name="android.permission.SET_WALLPAPER_HINTS" granted="true" flags="0" />
            <item name="android.permission.VIBRATE" granted="true" flags="0" />
            <item name="android.permission.ACCESS_WIFI_STATE" granted="true" flags="0" />
            <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
        </perms>
        <proper-signing-keyset identifier="10" />
    </package>

L'indentation est rapportée textuellement du fichier.


Procédure

Armés des connaissances ci-dessus, nous pouvons maintenant passer à l'examen des autorisations de Nova Launcher, enveloppées entre <perms></perms> . Bientôt, nous trouverons le seul que nous devrons modifier :

            <item name="android.permission.INTERNET" granted="true" flags="0" />

Pour empêcher efficacement l'accès de l'application à Internet, il suffit de supprimer toute la ligne et de redémarrer l'appareil. Il est inutile de la commenter pour une utilisation future : Android examine ce fichier à chaque démarrage, et va purger vos commentaires .


Inconvénients

En suivant cette procédure, vous obtiendrez une application qui ne pourra en aucun cas communiquer avec l'Internet. Cependant, Les applications et logiciels mal codés destinés à Marshmallow et aux versions supérieures peuvent se bloquer lorsqu'ils tentent de se connecter à Internet. comme le fait Nova.

De plus, comme l'a souligné Firelord, la mise à jour d'une application entraîne la réversion des modifications, ce qui annule nos efforts et nécessite une nouvelle suppression de l'autorisation.


Modification de la présente procédure

Pour annuler ce que nous avons fait ci-dessus, il suffit de rajouter l'autorisation que nous avons supprimée parmi les autres et de redémarrer l'appareil.


Avis de non-responsabilité

Je ne suis en aucun cas affilié à Nova Launcher ou à ses développeurs.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X