保护敏感活动

本文档详细介绍了监控敏感活动(例如用户登录和在线购买)的方法。

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 权限后,您将停用在应用上绘制应用叠加层的功能。此权限提供了一种保护机制,可防范伪装真实内容攻击。

实现

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

最佳实践

与任何权限一样,您应该信任任何叠加层应用,至少与您信任设备上的任何其他应用一样。换言之,您的应用不应允许其他应用在其上绘制叠加层,除非您知道其他应用值得信任。允许某个应用在其他应用上显示内容可能会带来危险,因为该应用可能会窃取密码或读取消息。