iOS app界面切换保护防止信息泄露措施有哪些
在 iOS App 界面切换时,为防止敏感信息泄露,常见并推荐的保护措施包括:
在 iOS App 界面切换时,为防止敏感信息泄露,常见并推荐的保护措施包括:
1. 实现切换时隐藏敏感内容
截图或多任务预览保护
iOS 多任务视图会自动呈现你的 App 截图,若存在敏感数据,可以通过添加“模糊层”或彩色遮罩保护隐私。
objectivec
- (void)applicationDidEnterBackground:(UIApplication*)application {// 添加模糊视图或遮罩UIView*blurView = [[UIViewalloc] initWithFrame:self.window.bounds]; blurView.backgroundColor = [UIColorwhiteColor]; blurView.tag =999;// 方便移除[self.window addSubview:blurView];}- (void)applicationWillEnterForeground:(UIApplication*)application {// 移除模糊层UIView*blurView = [self.window viewWithTag:999];if(blurView) { [blurView removeFromSuperview]; }}
使用系统提供的隐私过滤属性
iOS13+ 支持UIApplication.exclusiveTouch和UIView的isHidden、alpha属性结合使用,或者更直接:
objectivec
// 兼容iOS 11以上,可以设置此key阻止截图或录屏:// 该方法只能对视频类App或支持AirPlay的应用起作用self.window.layer.contents =nil;
或者:
objectivec
// 使用 UIAccessibility 放置安全元素,屏蔽截图识别敏感内容self.view.accessibilityViewIsModal =YES;
2. 禁止系统截图/录屏监控(有限制)
iOS 不支持完全阻止系统截图,但可以监听和响应录屏事件,及时清除敏感界面。
objectivec
if(@available(iOS11.0, *)) { [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(screenCapturedChanged) name:UIScreenCapturedDidChangeNotificationobject:nil];}- (void)screenCapturedChanged {if([UIScreenmainScreen].isCaptured) {// 录屏开启,隐藏敏感内容self.sensitiveView.hidden =YES; }else{// 录屏关闭,恢复显示self.sensitiveView.hidden =NO; }}
3. 关闭后台快照,防止应用切入后台时显示敏感信息
系统会自动生成应用快照并显示在多任务界面,添加模糊视图或空白视图覆盖,可以防止敏感信息泄露。
(同第1点中应用进入后台的模糊处理)
4. 数据加密与安全存储
保护数据本身,确保即使界面数据泄露,内容也是加密状态。可使用Keychain或加密数据库存储。
5. 会话管理与身份验证
恢复App时要求重新登录或验证身份,防止他人通过多任务切换访问敏感界面。
6. UI组件安全性设计
对于敏感信息界面的内容,避免使用屏幕录制API或AirPlay传输(例如 DRM 保护)
避免在通知和分享扩展中泄露敏感信息。
总结
表格
保护技术实现方式说明
模糊视图遮罩切入后台加模糊层,切前台移除防止多任务切换时敏感信息曝光
监听录屏状态监听UIScreenCapturedDidChangeNotification录屏时隐藏敏感视图
限制系统截图没有官方API可完全限制截图只能通过模糊等方式间接降低风险
会话验证切换回前台弹登录页或验证身份防止他人多任务切换时直接进入敏感界面
数据加密Keychain或加密数据库存储保护数据安全