2015-04-19 16 views
5

Ứng dụng iOS của tôi có màn hình khóa, khi được bật, bao phủ toàn bộ UIScreen. Tuy nhiên, bên ngoài các giới hạn UIScreen, tôi có các ô có thông tin nhạy cảm không được màn hình khóa che phủ. (Các ô đó có thể được quét vào và ra khi màn hình được mở khóa.)Thông tin trên màn hình an toàn như thế nào?

Làm cách nào để có thông tin bên ngoài giới hạn UIScreen? Kẻ tấn công có thể sử dụng một số loại màn hình ngoài hoặc trình gỡ rối hoặc một số cơ chế khác để "tiết lộ" những gì nằm ngoài màn hình UIScreen không?

[Màn hình khóa là WKWebView theo mặc định có chức năng "kính lúp". Tôi phát hiện ra rằng, khi được kích hoạt ở các cạnh của UIScreen, kính lúp sẽ hiển thị một vài pixel ở phía sau cạnh UIScreen. Tôi đã vô hiệu hóa kính lúp với this answer.]

+1

Thay vì lo lắng về việc ai đó có thể truy cập thông tin không có màn hình thì giải pháp tốt hơn là tải thông tin nhạy cảm theo yêu cầu. Bây giờ làm thế nào mà có thể được thực hiện phụ thuộc hoàn toàn vào việc thực hiện của bạn. – zambrey

+0

Hey Randomblue, bạn nên chấp nhận câu trả lời nếu bạn hài lòng. Nếu không, vui lòng theo dõi bất kỳ câu hỏi nào. – JAL

Trả lời

9

"Ẩn" chế độ xem màn hình không an toàn. Bất kỳ ai có thiết bị Jailbroken đều có thể móc nối ứng dụng của bạn vào thời gian chạy bằng MobileSubstrate và gọi số [[[UIApplication sharedApplication] keyWindow] recursiveDescription] để kết xuất phân cấp chế độ xem. Ngoài ra còn có các công cụ như RevealSpark Inspector cung cấp giao diện tương tự như trình gỡ lỗi chế độ xem của Xcode để xem bất kỳ chế độ xem nào hiện có trong UIWindow của ứng dụng. Như đề cập của zambrey, tốt nhất nên khởi tạo bất kỳ chế độ xem nào với thông tin nhạy cảm khi cần và loại bỏ chúng khi chúng bị loại bỏ và không còn cần thiết bởi người dùng, thay vì giữ chúng ngoài tầm nhìn nhưng vẫn nằm trong hệ thống phân cấp cửa sổ . Những lợi ích của việc này không chỉ là sự an toàn, nhưng việc có ít lượt xem hơn trong bộ nhớ sẽ cải thiện hiệu suất của ứng dụng và giảm lượng bộ nhớ của ứng dụng.

Nếu bạn lo ngại về bảo mật, bạn có thể muốn kiểm tra thiết bị đã bẻ khóa khi chạy và giới hạn một số tính năng cho các thiết bị đó.

+1

Một trong những lý do khiến nhiều ngân hàng không cho phép ứng dụng của họ chạy trên các thiết bị bẻ khóa/bắt nguồn là vì chính xác điều này. Ngay cả trên các thiết bị không được bẻ khóa, ứng dụng sẽ bị đóng ngay lập tức khi có bất kỳ loại lối ra nào. – cybermonkey

+0

"Bất kỳ ai có thiết bị Jailbroken" -> thiết bị không được bẻ khóa thì sao? Tôi chủ yếu quan tâm đến kịch bản đó. – Randomblue

+0

@Randomblue tốt, bất kỳ ai không có thiết bị bẻ khóa có thể không nhìn thấy thông tin ngoài màn hình, trừ khi họ có tính năng Trợ năng bằng cách nào đó có thể tăng lượt xem trong ứng dụng của bạn hoặc có thiết bị có kích thước màn hình bạn đã không không tính đến chế độ xem ẩn logic của bạn, khiến cho các chế độ xem của bạn xuất hiện trên màn hình thay vì ngoài màn hình. – JAL

5

Về mặt kỹ thuật, mọi thứ có trong bộ nhớ đều có thể được hiển thị trên thiết bị đã bẻ khóa. Ẩn các giao diện nhạy cảm bên ngoài nội dung hiện đang được hiển thị không phải là biện pháp bảo mật. Khi thiết bị đã được bẻ khóa, lượt xem và nội dung của các chế độ xem đó sẽ được hiển thị. Ngay cả khi bạn có một trường văn bản mật khẩu được đặt là 'secureTextEntry' và ngay cả khi bạn ẩn nó, nội dung có thể được đọc bằng trình gỡ lỗi được đính kèm với ứng dụng miễn là trường văn bản không được phân bổ lại. Và ngay cả khi textfield được deallocated, bộ nhớ có thể được bán phá giá và nếu bộ nhớ đó đã không được ghi đè nhưng bạn có khả năng có thể tìm thấy nội dung của chế độ xem đó. Bây giờ, nếu bạn không lo lắng về kịch bản Jailbroken, và bạn chỉ muốn tìm các tùy chọn khác, nơi ai đó với một thiết bị không jailbroken có thể khám phá quan điểm, có lẽ bạn nên kiểm tra các Accessibility features included in iOS. VoiceOver sẽ có thể đọc to văn bản bị ẩn nếu khả năng truy cập trong chế độ xem đó không được tắt đúng cách. Loại bỏ quan điểm từ các công cụ tiếp cận là đôi khi khó khăn vì một sự thay đổi trên cha mẹ có thể ảnh hưởng đến tất cả các subviews (đọc UIAccessibility documentation)

Thiết accessibilityElementsHidden-YES trong giao diện phụ huynh hoặc isAccessibilityElement để NO trong giao diện, nên làm việc.

Các vấn đề liên quan