Haben iPhone-Apps die Berechtigung, Anrufe ohne Benutzerinteraktion zu tätigen?


9

Ich habe gerade über einen Betrug mit verpassten Anrufen gelesen, bei dem der Benutzer belastet wird, auch wenn er die Nummer nicht zurückruft. Mir kam der Gedanke, dass eine böswillige iPhone-App Premium-Nummern anrufen könnte, um Benutzer aus Geld heraus zu betrügen - tatsächlich scheint dies in der Vergangenheit geschehen zu sein.

Laut Apples eigener Dokumentation :

Wenn ein Benutzer auf eine Telefonverbindung auf einer Webseite tippt, zeigt iOS eine Warnung an, in der er gefragt wird, ob der Benutzer die Telefonnummer wirklich wählen möchte, und leitet das Wählen ein, wenn der Benutzer dies akzeptiert. Wenn ein Benutzer eine URL mit dem Tel-Schema in einer nativen App öffnet, zeigt iOS keine Warnung an und leitet das Wählen ein, ohne den Benutzer weiter dazu aufzufordern.

Es scheint mir, dass eine anscheinend harmlose iPhone-App beispielsweise warten könnte, bis das Telefon aufgeladen ist (und daher wahrscheinlich nicht vom Benutzer besucht wird), und dann einen Anruf bei einer Premium-Tarifnummer einleiten könnte, um dem Entwickler einen ordentlichen Bonus zu sichern . In iOS scheint es keine Berechtigung zu geben, die ich ändern kann, um dieses Verhalten zu verhindern, da dadurch die Telefon-App mit einer URL geöffnet wird, anstatt auf Telefondaten zuzugreifen.

Kann jemand bestätigen, ob mein Verständnis korrekt ist und wenn ja, warum um alles in der Welt hat Apple ein so klaffendes Loch nicht geschlossen?

Antworten:


8

Ich habe das iOS-Verhalten experimentell überprüft, indem ich versucht habe, einen Anruf von einer meiner Apps aus zu initiieren.

Hier sind die Ergebnisse:

  • Es ist möglich, einen Telefonanruf ohne Benutzerbestätigung programmgesteuert zu starten. Ich habe gerade eine einzelne Codezeile geschrieben, die direkt nach dem Laden der App ausgeführt wird. Das heißt, wenn Ihre App im Vordergrund steht, kann sie jederzeit einen Anruf starten, auch ohne dass der Benutzer irgendwo tippen muss.
  • Ich habe eine stille Remote-Push-Benachrichtigung an die App gesendet, um die App zu aktivieren, wenn sie nicht ausgeführt wird, und dann denselben Code auszuführen. Es wurde kein Anruf gestartet. iOS erlaubt einer App nicht, einen Anruf zu initiieren, wenn die App im Hintergrund ausgeführt wird.

Wenn Sie also Ihre Fragen beantworten, können Sie einen Anruf nur starten, ohne dass der Benutzer es bemerkt, indem Sie den Benutzer davon überzeugen, die schädliche Anwendung im Vordergrund laufen zu lassen und dann den Anruf zu starten, da iOS diesen Vorgang nicht zulässt wenn die App im Hintergrund ist.

Derzeit bietet iOS keinen Mechanismus zum Blockieren des Startens von Telefonanrufen von einer bestimmten App aus. Dies kann jedoch nur geschehen, wenn sich die App im Vordergrund befindet.


Vielen Dank für die umfassende Untersuchung, brillante Antwort. Ich bin froh zu hören, dass es nur im Vordergrund ist, obwohl ich nicht anders kann, als zu denken, dass es nicht allzu schwer ist, eine App zu erfinden, die wahrscheinlich unbeaufsichtigt und im Vordergrund bleibt - die Kamera-App, die einen Zeitraffer macht, ist eine gutes Beispiel für die Art der Sache. Ich würde es immer noch vorziehen, URLs in anderen Apps zu öffnen, wenn eine Berechtigung für jede andere App geöffnet wurde - nur das erste Mal pro externer App bestätigt, nicht jedes Mal. Ich akzeptiere jedoch, dass dies Auswirkungen auf UX hat. Ich denke, jeder muss nur wachsam sein.
Cartroo

5

Ich habe eine Test-App erstellt, um dies zu überprüfen. App kann URLs tel://123456789nur öffnen, wenn sie im Vordergrund und aktiv ist. Wenn ich diesen Code auch kurz nach Eingabe des Hintergrundstatus aufrufe, hat die API zum Öffnen dieser URL nichts unternommen. Um Ihre Frage zu beantworten: Apps können ohne Ihr Wissen keinen Anruf tätigen.

Um dies zu testen, fügen Sie dies in Folgendes ein AppDelegate:

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

Tolle Antwort, danke für den Code. Wenn ich beide Antworten akzeptieren könnte, würde ich.
Cartroo

2

Wenn Sie versuchen, einen Anruf unter iOS> = 10.3 zu initiieren, wird dem Benutzer immer ein Popup angezeigt. Docs

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.