保护敏感活动

本文档详细介绍了如何监控敏感活动,例如用户登录和在线购买。

FLAG_SECURE

FLAG_SECURE 是一个窗口标志,用于告知 Android 不允许截屏或在不安全的显示屏(例如投屏)上显示窗口视图。这对于需要保护敏感信息的应用(例如银行应用或密码管理器)非常有用。当窗口标记为 FLAG_SECURE 时,Android 会阻止用户截屏,并阻止窗口显示在不安全的显示屏(例如电视或投影仪)上。这有助于防止未经授权的人员访问窗口中显示的信息。

这有助于减少欺诈行为

恶意应用或实体可能会检索后台屏幕截图。当应用的状态变为后台时,可以使用 FLAG_SECURE。截取屏幕截图时,生成的图片为空白。

FLAG_SECURE 还有助于实现远程屏幕共享用例。检索屏幕截图的不一定总是恶意应用,合法的屏幕共享应用也经常被用于欺诈性情况。

实现

对于包含您要保护的信息的视图,请添加以下内容:

Kotlin

window?.setFlags(
    WindowManager.LayoutParams.FLAG_SECURE,
    WindowManager.LayoutParams.FLAG_SECURE
)

Java

window.setFlags(
  WindowManager.LayoutParams.FLAG_SECURE,
  WindowManager.LayoutParams.FLAG_SECURE
);

最佳做法

请务必注意,此方法无法可靠地防止叠加层攻击。在某些情况下,它无法正确预测屏幕录制是否处于活动状态,但它确实涵盖了大多数使用情形。如需缓解叠加层攻击,请参阅下一部分有关 HIDE_OVERLAY_WINDOWS 权限的内容。

HIDE_OVERLAY_WINDOWS

HIDE_OVERLAY_WINDOWS 是 Android 12 中添加的一项权限,可让您的应用选择不让其他应用在其上绘制应用叠加层。在 Android 12 中,我们加大了获取 SYSTEM_ALERT_WINDOW 权限的难度,从而允许您的应用阻止来自第三方应用的叠加层。

这有助于减少欺诈行为

启用 HIDE_OVERLAY_WINDOWS 权限后,您将选择不让应用叠加层显示在您的应用之上。此权限提供了一种针对 cloak and dagger 攻击的保护机制。

实现

如需启用此权限,请将 HIDE_OVERLAY_WINDOWS 添加到项目的清单中。

最佳做法

与任何权限一样,您对任何叠加层应用的信任程度都应至少与对设备上任何其他应用的信任程度相当。换句话说,除非您知道其他应用值得信赖,否则您的应用不应允许其他应用在其上绘制叠加层。允许应用在其他应用上绘制内容可能很危险,因为该应用可能会窃取密码或读取消息。