iPhone 앱에 사용자 상호 작용없이 전화를 걸 수있는 권한이 있습니까? 중 전화 사기

지금 전화를 걸지 않아도 사용자에게 요금이 청구되는 부재 중 전화 사기 에 대해 읽었 습니다 . 악의적 인 iPhone 앱이 프리미엄 번호로 전화하여 사용자를 돈에서 사기로 만들 수 있다는 사실 이 나에게 생겼 습니다.

Apple의 자체 문서 에 따르면 :

사용자가 웹 페이지에서 전화 링크를 누르면 iOS는 사용자가 실제로 전화 번호로 전화를 걸 것인지 묻는 경고를 표시하고 사용자가 수락하면 전화 걸기를 시작합니다. 사용자가 기본 앱에서 tel 구성표로 URL을 열면 iOS는 사용자에게 추가 프롬프트없이 경보를 표시하지 않고 전화 걸기를 시작합니다.

분명히 양성 iPhone 응용 프로그램은 전화가 충전 될 때까지 기다렸다가 사용자가 참석하지 않을 때까지 기다린 다음 개발자에게 깔끔한 보너스를 제공하기 위해 프리미엄 요율 번호로 전화를 걸 수 있습니다. . iOS에서 권한이없는 것 같습니다.이 동작을 막기 위해 변경할 수 있습니다. 전화 데이터에 액세스하는 대신 URL로 전화 앱을 여는 중이기 때문입니다.

내 이해가 올바른지 확인할 수 있습니까? 그렇다면 왜 Apple이 왜 그런 구멍을 뚫지 않았습니까?



답변

내 앱 중 하나에서 전화 통화를 시작하여 iOS 동작을 실험적으로 확인했습니다.

결과는 다음과 같습니다.

  • 사용자 확인없이 프로그래밍 방식으로 전화를 걸 수 있습니다. 방금 앱이로드 된 직후에 실행되는 한 줄의 코드를 작성했습니다. 즉, 앱이 포 그라운드에 있으면 사용자가 아무 곳이나 탭하지 않아도 언제든지 전화를 시작할 수 있습니다.
  • 앱이 실행 중이 아닌 경우 앱을 깨우고 동일한 코드를 실행하기 위해 앱에 자동 원격 푸시 알림을 보냈습니다. 전화가 시작되지 않았습니다. iOS가 앱이 백그라운드에서 실행중인 경우 앱이 전화 통화를 시작하도록 허용하지 않습니다.

따라서 사용자가 알지 못하고 전화를 시작하는 유일한 방법 인 질문에 대답하는 것은 iOS 가이 작업을 허용하지 않기 때문에 사용자가 어떻게 든 악성 응용 프로그램을 포 그라운드에서 실행하고 전화를 시작하도록 설득하는 것입니다 앱이 백그라운드 인 경우

현재 iOS는 특정 앱에서 전화 통화 시작을 차단하는 메커니즘을 제공하지 않지만 앱이 포 그라운드에있는 경우에만 발생할 수 있습니다.


답변

이것을 확인하기 위해 테스트 앱을 만들었습니다. 앱은 tel://123456789포 그라운드에 있고 활성화 된 경우에만 URL을 열 수 있습니다 . 백그라운드 상태로 들어간 직후에도이 코드를 호출하면이 URL을 여는 API가 아무 작업도 수행하지 않았습니다. 따라서 귀하의 질문에 답변하기 위해 귀하의 지식 없이는 앱에서 전화를 걸 수 없습니다.

이 페이스트를 테스트하려면 다음을 수행하십시오 AppDelegate.

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

답변

iOS> = 10.3에서 전화를 걸려 고하면 항상 팝업이 사용자에게 표시됩니다. 문서