屏幕外信息的安全性如何?

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企业安全云推“屏幕水印”助企业破解信息安全难题

如何使用金甲文档加密软件对办公文档加密?浙江公司外发数据防泄漏方案,上海风奥科技

如何使用金甲文档加密软件对办公文档加密?浙江公司外发数据防泄漏方案,上海风奥科技

如何提高系统接口安全性

电脑开机后进不了系统