2.1 在屏幕共享与远程控制启用时保护敏感内容
3 分钟阅读
原文链接: https://developer.apple.com/documentation/swiftui/protecting-sensitive-content-when-screen-sharing
2.1 在屏幕共享与远程控制启用时保护敏感内容
检测正在进行的屏幕捕获会话,并做出恰当响应,保护应用中的敏感内容。
概述
屏幕共享和远程控制特性为人们提供了有用的协作方式。随着屏幕共享越来越普遍,处理敏感数据的应用——例如银行、支付和医疗类应用——应当采取措施,在正在进行的捕获会话期间保护内容。
iOS 和 iPadOS 提供了内置 API 来检测系统何时捕获某个场景。请响应这一信号,并在应用中主动采取措施,在任何捕获会话期间保护敏感内容。
检测系统何时捕获应用内容
当屏幕捕获会话处于活跃状态时——包括屏幕录制、镜像或远程控制——系统会更新该场景的捕获状态。在 SwiftUI 中使用 isSceneCaptured 环境值,或者在 UIKit 中使用 sceneCaptureState 来观察这个状态。当状态变化时,相应地更新界面——例如把敏感视图替换为屏蔽后的或占位内容。
SwiftUI
| |
UIKit
| |
注意:
sceneCaptureState并不区分捕获类型。屏幕录制、AirPlay 镜像和远程控制都会产生相同的信号。
响应捕获会话
正确的响应方式取决于应用所处理数据的敏感程度,以及这些内容在捕获会话期间被暴露可能对人们造成的影响。显示财务账户明细或个人健康信息的应用,可能需要比通用应用更强的保护。请评估使用你应用的人所需要的保护级别,从而确定应用检测到捕获会话时应当如何响应:
- 告知当事人。 显示横幅或应用内通知,让人们知道自己的屏幕正在被共享。
- 隐藏或屏蔽敏感字段。 把账号、余额、卡片明细和密码替换为占位文本或模糊叠加层。「密码」应用就使用类似模式来保护敏感内容不被截图。
- 禁用高风险操作。 在捕获处于活跃状态时,阻止转账、显示密码或其他不可逆操作完成。
在保护与可用性之间取得平衡
sceneCaptureState 会因所有捕获事件而激活,包括录制教程或镜像到个人 Apple TV 这类日常用途。决定如何响应时,请考虑以下几点:
- 有选择地应用保护。 针对应用中风险最高的部分,而不是大范围地封锁功能。整体性的应用级锁定可能会让有正当屏幕共享需求的人感到沮丧。
- 使用中性的措辞。 避免暗示当事人正在遭受攻击的提示。像「屏幕共享已启用。本次会话期间部分内容受保护。」这样平和、信息性的通知,既不容易引起惊慌,也更有效。
- 为你的受众权衡取舍。 安全要求更严格的银行应用,可能比通用应用更有理由采取限制性更强的行为。请依据应用自身的风险状况来设计响应方式。