9 votes

Les applications iPhone ont-elles la permission de passer des appels sans interaction avec l'utilisateur ?

Je lisais un article sur une arnaque d'appel manqué où l'utilisateur est facturé même s'il ne rappelle pas le numéro. Il m'est venu à l'esprit qu'une application iPhone malveillante pourrait passer des appels vers des numéros surtaxés pour escroquer les utilisateurs. c'est arrivé dans le passé.

Selon La propre documentation d'Apple :

Lorsqu'un utilisateur tape sur un lien téléphonique dans une page web, iOS affiche une alerte lui demandant s'il veut vraiment composer le numéro de téléphone et lance la numérotation si l'utilisateur accepte. Lorsqu'un utilisateur ouvre une URL avec le schéma tel dans une application native, iOS n'affiche pas d'alerte et lance la numérotation sans autre demande à l'utilisateur.

Il me semble qu'une application iPhone apparemment inoffensive pourrait, par exemple, attendre que le téléphone reste en charge (et donc que l'utilisateur ne s'en occupe pas), puis lancer un appel vers un numéro surtaxé afin de rapporter au développeur un joli bonus. Il ne semble pas y avoir de permission dans iOS que je puisse modifier pour empêcher ce comportement, puisqu'il s'agit d'ouvrir l'application du téléphone avec une URL plutôt que d'accéder à des données du téléphone.

Quelqu'un peut-il confirmer si ma compréhension est correcte et, dans l'affirmative, pourquoi diable Apple n'a pas comblé un tel vide ?

10voto

tomacco Points 291

J'ai vérifié expérimentalement le comportement d'iOS en essayant de lancer un appel téléphonique à partir d'une de mes applications.

Voici les résultats :

  • Il est possible de lancer un appel téléphonique de manière programmée sans confirmation de l'utilisateur. Je viens d'écrire une seule ligne de code qui est exécutée juste après le chargement de l'application. Cela signifie que si votre application est au premier plan, elle peut démarrer un appel à tout moment, même sans que l'utilisateur ait besoin de toucher quoi que ce soit.
  • J'ai envoyé une notification silencieuse à distance à l'application afin de la réveiller si elle n'est pas en cours d'exécution, puis j'ai exécuté le même code. Aucun appel n'a été lancé ; iOS ne permet pas à une application de lancer un appel téléphonique si l'application fonctionne en arrière-plan.

Pour répondre à vos questions, le seul moyen de lancer un appel téléphonique sans que l'utilisateur s'en aperçoive est de convaincre l'utilisateur de laisser l'application malveillante fonctionner au premier plan, puis de lancer l'appel téléphonique, car iOS ne permet pas cette opération si l'application est en arrière-plan.

Actuellement, iOS ne fournit aucun mécanisme permettant de bloquer le lancement d'appels téléphoniques à partir d'une application particulière, mais cela ne peut se produire que si l'application est au premier plan.

5voto

Mateusz Szlosek Points 21762

J'ai créé une application de test pour vérifier cela. L'application peut ouvrir une URL telle que tel://123456789 uniquement lorsqu'il est au premier plan et actif. Lorsque j'appelle ce code, même juste après être passé en arrière-plan, l'API permettant d'ouvrir cette URL n'a rien donné. Donc, pour répondre à votre question - les applications ne seront pas en mesure d'effectuer un appel à votre insu.

Pour tester cela, collez ceci dans votre AppDelegate :

- (void)applicationDidEnterBackground:(UIApplication *)application {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
}

2voto

Vaiden Points 121

Lorsque vous essayez de lancer un appel sur iOS >= 10.3, une fenêtre contextuelle s'affiche toujours pour l'utilisateur. Docs

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X