移动端防截屏录屏技术在百度账户系统实践

本文探讨了在移动端应用开发中如何通过Android的FLAG_SECURE和iOS的截屏/录屏通知机制防止敏感信息泄露,介绍了iOS13中UITextField的secureTextEntry特性的应用,以及百度账户系统在实际场景中的实现和优化。

作者 | Seven

导读

在移动端应用的开发过程中,保护用户隐私和应用内敏感信息安全是一个不可忽视的课题。随着诈骗手段的升级,“共享屏幕”被诈骗分子频频使用,因为密码被泄露而导致受害者财物受损的事情层出不穷。只要开启了“共享屏幕”–本质上是一种录屏,密码、验证码等重要信息就会有被泄露的可能。防止截屏和录屏成为了一个重要的安全措施,特别是对于金融、医疗、企业和高安全要求的应用。本文将介绍一些在iOS和Android平台上实现防截屏和录屏的常见策略和方法,以及在百度账户系统上的实践。

全文4431字,预计阅读时间12分钟。

01 技术研究

1.1 Android平台防截屏策略

Android平台提供了一个更直接的方式来防止应用内容被截屏或录屏。Google 自 Android 4.2(API level 17)引入 FLAG_SECURE,用于将窗口内容标记为安全,禁止在屏幕截图中和非安全的显示器被输出。

/** Window flag: treat the content of the window as secure, preventing
 * it from appearing in screenshots or from being viewed on non-secure
 * displays.
 *
 * <p>See {@link android.view.Display#FLAG_SECURE} for more details about
 * secure surfaces and secure displays.
 */
public static final int FLAG_SECURE             = 0x00002000;

可以在 Activity 中,通过getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE) 来设置。当截屏的时候,系统会弹出一个Toast提示“禁止屏幕抓取”;当录屏的时候,当前设备显示正常且能正常操作,看似能够正常录制,但是保存后的视频,都是一片黑色,并没有APP的相关界面。

探究:FLAG_SECURE 是如何产生作用的

在 Android 图形系统上,一个 Activity 对应创建一个 Surface,每个 Surface 对应 SurfaceFlinger 中的一个 Layer。SurfaceFlinger负责管理、合成所有图层,最终显示在屏幕上。

我们通过 Android 的 源码SurfaceFlinger.cpp 和 Layer.cpp中,可以看到,activity 中设置 FLAG_SECURE 后,显示的 Surface 都是属于SECURE状态,会阻止屏幕内容被捕获。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值