iOS Springboard安全性[重新访问]

Springboard或应用程序切换器是iOS中的UI / UX界面,用于在应用程序之间进行切换。 很棒,但是有时候作为应用程序的开发人员,我们忘记了iOS随每个发行版的发展而变化,并且某些行为上的变化会使我们绊倒。

最近,一位与我一起开发应用程序的测试人员指出,可以在应用程序处于跳板状态时查看敏感的[付款]信息。 这不应该发生,并且该应用程序以前曾采用[有效]技术来掩盖此信息。 发生了“故障”。

因此,您多久检查一次安全功能是否仍按预期工作?

每次发布新的iOS时,您都这样做吗?
每次有新的iOS次要版本可用吗?
每次发布应用程序版本如何?
兄弟,你甚至进行回归测试吗?

刚刚发生了什么?

掩盖敏感应用程序的技术是一种常见的技术。

  1. 应用退出时
  2. 载入图片
  3. 在窗口上显示

我看了一下applicationWillResignActive中的代码

很标准的东西; 我检查了一下,但它仍然被呼叫,所以……?

测试,测试很多。 不,不只是……

因此,我们测试了很多,测试了很多。 事实证明,如果我们单按主页按钮,该应用程序将始终运行并显示锁定屏幕。 但是,如果我们双击主页按钮(直接跳到Springboard),则该应用几乎总是无法显示锁定屏幕。 这种行为发生在我们所有的测试设备(iPad或iPhone)上,这真是一个很大的惊喜。

定时

事实证明,使用UIImage.named加载图像需要时间,并且比现代iOS在主动退出并直接进入Springboard时愿意提供的时间更长。 此安全功能最初确实起作用,但是在某些时候,Apple引入了两次按下Home按钮的功能,这在我们的测试中始终使该应用程序清理的时间更少。

此外,Springboard是iOS的主要功能,因此随着Apple的每个发行版都有可能在后台进行更改。

我们的解决方法

花更少的时间。 幸运的是,这样做非常简单。

  1. applicationWillResignActive中需要它们之前,请确保要使用的图像和图像视图已准备好并已加载到内存中。 至此,我们的项目开始运行,但是我们选择使用较小的图像来逐步节省速度。
  2. 不要使用大图像。 该项目中使用的原始图像为2.4MB,我们减少到250k。 在这一点上,我们都对性能感到满意,但如有必要,可以做更多的事情。
  3. 如果您确实想确保您的应用有足够的时间,甚至不用图像,只需在窗口上方添加[黑色]视图即可。

一旦我们减少了使应用变得晦涩的时间,事情就会变得更加乐观。

摘要

不要以为曾经工作过的东西会永远持续下去。

做测试。

测试更多。

________

这是一个带有锁定屏幕的有效实现的github项目。 随意查看并根据需要使用它。