O3.17.4Task switcher snapshot leakage设计

应用切换器缩略图会截留上一屏的敏感画面

别名: 最近任务截图 · app switcher · recents screen leakage

概念解释

应用切到后台时,系统为切换器截一张当前画面做缩略图;这张截图在应用退出前台后依然存在,设备解锁状态下任何能打开切换器的人都能看到。银行余额、病历、私密消息因此会在「应用已经关闭」的错觉下继续暴露——任务切换器截图泄露是屏幕暴露面里最容易漏掉的一块,因为它不在任何应用的界面上。

机制

截图的目的是切换体验(快速回到原位),机制是系统在 onPause 类生命周期点对窗口做一次位图快照并缓存。泄露来自快照内容与留存时间的组合:金融类应用的用户常在敏感页(余额、卡号)切出,快照恰好定格在最敏感帧;缓存存活到任务被清理为止,可能数天。标准防御是「后台遮蔽」:应用在失焦时把自己替换为品牌封面或模糊层,使快照拍到的是替身而非内容。这个机制的全部要点在于时机——遮蔽必须发生在快照之前,晚一帧就泄露一帧,所以实现要挂在生命周期最前端而不是动画结束后。

边界

遮蔽层的副作用是切换回来的第一帧也是替身,多一步「刷新」感知;对频繁切换的用户是真实摩擦,所以遮蔽适合按屏幕分级(敏感页遮蔽、普通页不遮)。截屏/录屏排除标志与后台遮蔽是两个机制:前者禁止系统截屏(顺带让切换器无图可截),副作用是用户自己也无法截图存凭证;后者只替换内容。混合使用时要明确各自范围。二手转让与借出场景下,切换器历史是长期驻留面,系统级的「清除全部后台」只能靠用户记得操作。

怎么落地

  • 敏感应用默认开后台遮蔽:失焦即切替身层,回焦即恢复;替身用品牌图或模糊截图,不用纯黑(纯黑会暴露「有东西被藏了」之外还降低可用性感知)。
  • 遮蔽挂在生命周期入口,不挂动画回调;测试用「切出瞬间截屏」验证快照拍到的是替身。
  • 银行与医疗类应用叠加截屏排除标志,并告知用户「本应用内无法截图」的原因。
  • 验证:自动化用例——在敏感页触发切出,读取切换器缓存位图,断言其与替身层一致而非页面内容;回归覆盖每个敏感页面。

延伸

  • 同组O3.17.1 锁屏通知预览 · O3.17.2 明文输入与肩窥 · O3.17.3 投屏遮蔽
  • 相邻O3.08 权限提升操作的确认 · O1.02 数据最小化
  • 站内检索app switcher snapshot · secure flag · background blur · recents screen

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/O3.17.4