屏幕外信息有多安全?

时间:2015-04-19 11:34:14

标签: ios security lockscreen wkwebview uiscreen

我的iOS应用有一个锁定屏幕,启用后会覆盖整个UIScreen。但是,在UIScreen范围之外,我的窗格中包含锁定屏幕未覆盖的敏感信息。 (当屏幕解锁时,可以刷入和滑出那些窗格。)

UIScreen范围之外获取信息的安全性如何?攻击者可以使用某种外部显示器,调试器或其他一些机制来“揭示”UIScreen屏幕之外的内容吗?

[锁定屏幕是WKWebView,默认情况下具有“放大镜”功能。我发现,当在UIScreen的边缘触发时,放大镜会显示UIScreen边缘后面的几个像素。我已经使用this answer禁用了放大镜。]

2 个答案:

答案 0 :(得分:9)

屏幕外的“隐藏”视图根本不安全。任何拥有越狱设备的人都可以在运行时使用MobileSubstrate挂接到您的应用程序,并调用[[[UIApplication sharedApplication] keyWindow] recursiveDescription]来转储视图层次结构。还有RevealSpark Inspector等工具提供类似于Xcode视图调试器的界面,以查看应用UIWindow中当前的任何视图。

正如zambrey建议的那样,最好根据需要初始化具有敏感信息的任何视图,并在用户不再需要时删除它们,而不是将它们保持在视图之外,但仍然在窗口层次结构中。这样做的好处不仅仅在于安全性,而且内存中的视图更少,这将提高应用程序的性能并减少内存占用。

如果您担心安全性,可能需要在运行时检查越狱设备并限制这些设备的某些功能。

答案 1 :(得分:5)

从技术上讲,内存中的任何内容都可以在越狱设备上公开。将敏感视图隐藏在当前显示的内容之外并不是一种安全措施。一旦设备被越狱,这些视图的视图和内容将被暴露。即使您将密码文本字段设置为“secureTextEntry”,即使您将其隐藏,只要未释放文本字段,就可以使用附加到应用程序的调试程序读取内容。即使取消分配文本字段,也可以转储内存,如果该内存尚未被覆盖,则可能会找到该视图的内容。

现在,如果您不担心Jailbroken场景,并且您只想找到其他选项,其中有非越狱设备的人可以探索视图,您应该检查Accessibility features included in iOS。如果未正确禁用该视图中的辅助功能,VoiceOver将能够读出隐藏的大声文本。从辅助功能工具中删除视图有时很棘手,因为父级的更改可能会影响所有子视图(请阅读UIAccessibility documentation

在父视图中将accessibilityElementsHidden设置为YES或在视图中将isAccessibilityElement设置为NO应该有效。