Các ứng dụng iPhone có được phép thực hiện cuộc gọi mà không có sự tương tác của người dùng không?


9

Tôi đã đọc về một cuộc gọi lừa đảo ngay bây giờ khi người dùng bị tính phí ngay cả khi họ không gọi lại cho số đó. Tôi nhận thấy rằng một ứng dụng iPhone độc ​​hại có thể thực hiện các cuộc gọi đến số cao cấp để lừa đảo người dùng bằng tiền - thực sự, có vẻ như điều này đã xảy ra trong quá khứ.

Theo tài liệu riêng của Apple :

Khi người dùng chạm vào một liên kết điện thoại trong một trang web, iOS sẽ hiển thị một cảnh báo hỏi xem người dùng có thực sự muốn quay số điện thoại và bắt đầu quay số nếu người dùng chấp nhận. Khi người dùng mở URL bằng lược đồ tel trong ứng dụng gốc, iOS sẽ không hiển thị cảnh báo và bắt đầu quay số mà không cần nhắc nhở thêm cho người dùng.

Dường như với tôi, một ứng dụng iPhone rõ ràng lành tính có thể, nói, đợi cho đến khi điện thoại được sạc (và do đó có thể không được người dùng tham gia) và sau đó thực hiện cuộc gọi đến số điện thoại cao cấp để thưởng cho nhà phát triển một phần thưởng gọn gàng . Có vẻ như không có bất kỳ sự cho phép nào trong iOS Tôi có thể thay đổi để ngăn chặn hành vi này, vì đây là mở ứng dụng điện thoại bằng URL thay vì truy cập bất kỳ dữ liệu điện thoại nào.

Bất cứ ai cũng có thể xác nhận nếu sự hiểu biết của tôi là chính xác và, nếu vậy, tại sao Apple không đóng lỗ hổng như vậy?

Câu trả lời:


8

Tôi đã kiểm tra thử nghiệm hành vi của iOS bằng cách thử bắt đầu một cuộc gọi điện thoại từ một trong các ứng dụng của mình.

Đây là kết quả:

  • Có thể lập trình một cuộc gọi điện thoại mà không cần xác nhận của người dùng. Tôi vừa mới viết một dòng mã được thực thi ngay sau khi Ứng dụng được tải. Có nghĩa là nếu Ứng dụng của bạn ở phía trước, nó có thể bắt đầu cuộc gọi bất cứ lúc nào, thậm chí không cần người dùng nhấn vào bất cứ đâu.
  • Tôi đã gửi một thông báo đẩy từ xa im lặng đến Ứng dụng để đánh thức ứng dụng nếu ứng dụng không chạy, và sau đó thực thi cùng một mã. Không có cuộc gọi nào được bắt đầu; iOS không cho phép ứng dụng bắt đầu cuộc gọi điện thoại nếu ứng dụng đang chạy ẩn.

Vì vậy, trả lời câu hỏi của bạn, cách duy nhất để bắt đầu một cuộc gọi điện thoại mà người dùng không nhận ra, bằng cách nào đó thuyết phục người dùng để ứng dụng độc hại chạy ở phía trước, sau đó bắt đầu cuộc gọi điện thoại, vì iOS sẽ không cho phép thao tác này nếu ứng dụng được chạy nền.

Hiện tại iOS không cung cấp bất kỳ cơ chế nào để chặn các cuộc gọi điện thoại bắt đầu từ một ứng dụng cụ thể, nhưng nó chỉ có thể xảy ra nếu ứng dụng ở phía trước.


Cảm ơn đã điều tra toàn diện, câu trả lời tuyệt vời. Tôi rất vui khi biết nó chỉ ở phía trước, mặc dù tôi không thể không nghĩ rằng không quá khó để phát minh ra một ứng dụng có khả năng bị bỏ mặc và ở phía trước - ứng dụng máy ảnh thực hiện sai thời gian là một ví dụ tốt về các loại điều. Tôi vẫn thích mở URL trong các ứng dụng khác là quyền cho mỗi ứng dụng được mở - chỉ xác nhận lần đầu tiên cho mỗi ứng dụng bên ngoài, không phải mọi lúc. Tôi chấp nhận rằng có ý nghĩa UX, tuy nhiên. Tôi đoán mọi người chỉ cần cảnh giác.
Cartroo

5

Tôi đã tạo một ứng dụng thử nghiệm để kiểm tra điều này. Ứng dụng có thể mở URL như tel://123456789chỉ khi nó ở trong nền trước và hoạt động. Khi tôi gọi mã này ngay cả sau khi vào trạng thái nền, API để mở URL này không làm gì cả. Vì vậy, để trả lời câu hỏi của bạn - ứng dụng sẽ không thể thực hiện cuộc gọi mà bạn không biết.

Để kiểm tra dán này trong của bạn AppDelegate:

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

Câu trả lời tuyệt vời, cảm ơn cho mã. Nếu tôi có thể chấp nhận cả hai câu trả lời tôi sẽ.
Cartroo

2

Khi cố gắng thực hiện cuộc gọi trên iOS> = 10.3, cửa sổ bật lên sẽ luôn được hiển thị cho người dùng. Tài liệu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.