屏幕外信息的安全性如何?
Posted
技术标签:
【中文标题】屏幕外信息的安全性如何?【英文标题】:How secure is off-screen information? 【发布时间】:2015-06-26 01:57:03 【问题描述】:我的 ios 应用有一个锁定屏幕,启用后会覆盖整个UIScreen
。但是,在UIScreen
范围之外,我有一些窗格,其中包含锁定屏幕未覆盖的敏感信息。 (屏幕解锁时,这些窗格可以滑入和滑出。)
在UIScreen
范围之外获取信息有多安全?攻击者能否使用某种外部显示器、调试器或其他机制来“揭示”UIScreen
屏幕之外的内容?
[锁屏为WKWebView
,默认具有“放大镜”功能。我发现,当在UIScreen
的边缘触发时,放大镜会显示UIScreen
边缘后面的几个像素。我已经用this answer禁用了放大镜。]
【问题讨论】:
与其担心是否有人可以获取屏幕外的信息,更好的解决方案是按需加载敏感信息。现在如何做到这一点完全取决于您的实施。 嘿 Randomblue,如果您满意,您应该接受答案。如果没有,请随时跟进任何问题。 【参考方案1】:“隐藏”屏幕外的视图根本不安全。任何拥有越狱设备的人都可以在运行时使用 MobileSubstrate 连接到您的应用程序并调用 [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
转储视图层次结构。还有Reveal 和Spark Inspector 等工具提供了一个类似于Xcode 的视图调试器的界面,可以查看当前在应用程序UIWindow
中的任何视图。
正如 zambrey 建议的那样,最好根据需要使用敏感信息初始化任何视图,并在它们被关闭且用户不再需要时将其删除,而不是将它们保持在视图之外但仍在窗口层次结构中。这样做的好处不仅仅是安全,而且在内存中减少视图会提高应用的性能并减少其内存占用。
如果您担心安全问题,您可能希望在运行时检查越狱设备并限制这些设备的某些功能。
【讨论】:
许多银行不允许他们的应用程序在越狱/root 设备上运行的原因之一就是因为这个。即使在未越狱的设备上,应用程序也会在任何类型的退出时立即关闭。 "任何拥有越狱设备的人" -> 非越狱设备呢?我最感兴趣的是那个场景。 @Randomblue 好吧,任何没有越狱设备的人都可能无法看到屏幕外的信息,除非他们有一个辅助功能可以以某种方式增加您应用程序中的视图,或者有一个设备的屏幕尺寸您未在视图隐藏逻辑中考虑,导致您的视图显示在屏幕上而不是屏幕外。【参考方案2】:从技术上讲,内存中的任何内容都可能暴露在越狱设备上。将敏感视图隐藏在当前显示的内容之外并不是一项安全措施。一旦设备越狱,视图和这些视图的内容将被暴露。即使您将密码文本字段设置为“secureTextEntry”并且即使您将其隐藏,只要该文本字段未解除分配,就可以使用附加到应用程序的调试器读取内容。即使文本字段被释放,内存也可能被转储,如果该内存尚未被覆盖,您可能会找到该视图的内容。
现在,如果您不担心越狱场景,并且只想找到其他选项,让没有越狱设备的人可以浏览视图,您可能应该查看Accessibility features included in iOS。如果未正确禁用该视图中的辅助功能,VoiceOver 将能够朗读隐藏的文本。从辅助工具中删除视图有时很棘手,因为父视图的更改可能会影响所有子视图(阅读UIAccessibility documentation)
在父视图中将accessibilityElementsHidden
设置为YES
或在视图中将isAccessibilityElement
设置为NO
,应该可以工作。
【讨论】:
以上是关于屏幕外信息的安全性如何?的主要内容,如果未能解决你的问题,请参考以下文章
防拍照防截屏,360企业安全云推“屏幕水印”助企业破解信息安全难题
如何使用金甲文档加密软件对办公文档加密?浙江公司外发数据防泄漏方案,上海风奥科技