iOS每次发送到后台时都会截取应用程序的屏幕截图 - 我如何保护我的应用程序?

NSP*_*tik 8 security iphone ios nsdocumentdirectory

每次应用程序的安全性出现时,事实证明很多人都不知道这是一个问题.例如,每当我们的应用程序背景化并且存储在本地存储中时,iOS就会对可见屏幕进行屏幕截图.

现在这就是我想要摆脱的东西.我正在开发一个在线金融交易的应用程序,我希望我的应用程序在安全方面非常强大.这是我的应用程序背景时存储屏幕截图的路径.


路径:/private/var/mobile/Applications/15980ADD-B269-4EBE-9F52- B6275AFB195A/Library/Caches/Snapshots/com.ABC.myAppName/screenshotName.PNG


这是存储的图像看起来非常关键:

在此输入图像描述


更重要的情况是,如果用户输入了他/她的信用卡/借记卡号码,包括CVV2号码和其他基本信息,可能会在后台强制使用App一段时间.

我一直在做一些搜索,我知道,为了让攻击者能够利用这种攻击,他可以通过两种方式获得访问权限:

  • 攻击者需要对设备进行物理访问,以达到越狱的目的.

  • 需要与监狱破坏设备并尝试远程访问设备的用户在同一网络上.

我可以做些什么来避免这种情况发生?是否有任何解决方案可以避免攻击者以这种方式访问​​敏感信息?

此外,当应用程序处于后台运行状态时,我还建议启用空白屏幕截图或删除应用程序的屏幕截图.但是,我不知道该选择什么以及如何正确地做到这一点.还有其他选择吗?

Mic*_*ann 26

我可以建议一些事情:

1)background通过应用程序委托方法,您知道何时将应用程序放入其中:

- (void) applicationDidEnterBackground:(UIApplication *)application
Run Code Online (Sandbox Code Playgroud)

这就是生成快照的确切时刻.为什么不将您的观点变为不同或更"安全"的观点?

2)

如果您希望在将应用程序带回前台时忽略"安全"(或虚假)快照,则可以使用" [UIApplication ignoreSnapshotOnNextApplicationLaunch]".

3)

UIApplicationExitsOnSuspend将应用程序放入后台时,您还可以在应用程序的Info.plist中添加" ",这将完全终止您的应用程序,而不是保存快照.

  • 只需注意第3点:Xcode将"UIApplicationExitsOnSuspend"转换为"应用程序不在后台运行".如果设置为YES,那么应用程序根本不会在后台运行,但它不会完全退出.iOS仍然会截取屏幕截图,应用程序仍显示在任务切换器中. (2认同)

Hor*_*rst 11

Apple告诉我们在去之前隐藏安全信息background,所以只需给它一个图像来隐藏所有内容:

-(void)applicationWillResignActive:(UIApplication *)application
{
    if(needToHide){
    _imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
    [_imageView setImage:[UIImage imageNamed:@"HideME.png"]];
    [self.window addSubview:_imageView];
    }
}


- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(_imageView != nil) {
        [_imageView removeFromSuperview];
        _imageView = nil;
    }
}
Run Code Online (Sandbox Code Playgroud)