移动端数据防泄漏 -- 业务与技术的双轮驱动

74 阅读9分钟

原文:mp.weixin.qq.com/s/AMwfENQCn…

背景

在移动互联网应用中,信息安全与数据保护已成为核心命题。近年来国内真实且有公开报道的重大数据泄露 / 违规使用事件数不胜数,例如:

  • 某游戏公司员工在测试阶段,私自录制未公开的游戏画面并分享至社交媒体,导致内容提前泄露。该员工因此因违反保密协议而被公司解雇并面临法律追责
  • 金融机构员工违规截图客户个人信息并通过微信等渠道外泄,此举不仅导致涉事员工被立即开除,还致使所在机构面临监管部门的高额罚款

大参林企业内部APP往往承载了商品价格、财务数据、供货信息等核心敏感数据。这些数据不仅是企业运营的命脉,更是其竞争优势的关键所在。一旦泄露,可能会对企业造成严重影响。因此,我们需在不影响用户体验的前提下,平衡业务需求与技术防护,构建一个完整的安全防护闭环。  

业界对标

众所周知泄密手段通常是用户在屏幕上通过截图、录屏或相机二次拍摄获取,从而泄露敏感信息。想要了解防泄密手段,不妨看看业界的防泄密手段都有哪些:

 

  • 微信:在收款码页面中进行截图,微信会在敏感视图中增加蒙层视图提示,起到一定的警示作用。
  • 企业微信:在会话聊天页面增加水印进行数据防泄漏操作,从而根据水印进行溯源。
  • 京东金融:在账号登录页面中,当截屏操作时得到的是黑色页面,让用户无法通过截图获取。

通过对三款主流APP的调研,我们发现其防止数据泄露的手段大体可以归纳为三类:提示防护(告知型)、水印防护(震慑型)以及防截屏录屏(技术型)。在大参林企业内部APP的实践过程中,并未局限于单一的技术路径,而是从业务与技术两个维度协同发力,形成双重防护策略。

业务防护

业务防护的核心目标是“教育与约束并重”,通过可感知的交互与策略,降低风险事件的发生 ,下面列出较为典型常用的手段:

  • 友情提示(提醒型防护)
  • 阈值警告(风险策略型)
  • 限制使用(强制型防护)

友情提示(提醒型防护)

弹窗、吐司提醒是一种较为常用的警示手段,该场景常用于页面尽管存在敏感信息,但仍然允许用户截屏/录屏,意在提醒用户截屏/录屏可能会泄露敏感信息。

实现机制为监听系统通知(截屏/录屏事件)后,弹出提示或 toast(如图),其优点在于低成本、不干扰业务;缺点在于提醒易被忽略,无法真正阻止泄露。

阈值警告(风控策略型)

该场景常用于企业风控策略调节,部分功能(如财务报表、销售业绩等)门店需要截图上报、汇总,此时允许用户进行限定次数的截屏/录屏,一旦达到风险阈值就会进行对应的控制:弹窗(如图)、禁用、冻结等

阈值策略设计思路也比较简单,通过远程配置下发阈值(如 5 分钟内截屏/录屏超过 3 次),触发上报与限制,流程图(如图)

 

该方式灵活度较高,配合业务或风控决策,动态配置阈值,支持不同风险等级下发不同动作,后续亦可结合上报数据与冻结策略构建“行为画像”,利用AI自动调整策略。

限制使用(强制防护型)

限制使用是一种更为简单、粗暴的手段,当用户在敏感信息页面(如销售业绩、商品清货价等页面)发生截屏/录屏动作或者是达到风险阈值次数时,直接锁死/冻结功能,无法使用该功能,更有激进做法是冻结账号(如图)。后续可通过解冻、人工审核等流程进行,恢复功能的使用。

这种强制型防护最强,可以杜绝继续操作,但缺点也比较明显:用户体验下降,易被误认为系统异常。

 

 

业务防护手段多种多样,本文仅列举了三个较为典型的场景:友情提示、阈值警告、功能限制。具体采用哪种方式,需要结合实际业务场景谨慎选择,避免因过度干预而损害用户体验。

更为合理的做法是采渐进式限制:先通过“友情提醒”传递风险意识,在用户行为频繁或严重时再升级为“阈值警告”,最后才进入“功能限制”。这种循序渐进的策略既能发挥防护作用,又能最大限度地兼顾用户体验,避免“一刀切”的粗暴处理方式。

技术防护

技术防护侧重于利用技术影响或者禁止用户截屏录屏获取途径,从而增加传播成本

禁止截屏/录屏

在 Android / Harmony 等平台存在系统级 API 可以直接禁止截屏/录屏,是保护极度敏感页面的有效手段。iOS 没有等效的公开 API,无法直接全面禁用截屏/录屏。

在 iOS 上常用的替代做法是利用 UITextField.secureTextEntry 特性:将敏感内容放在启用了 secureTextEntry = YES 的 UITextField(或借助其内部渲染层)中。开启后系统会把该区域当作密码处理——屏幕上显示掩码(如圆点),并在截屏/录屏或 QuickTime 投屏时对该区域做特殊处理,使其在截图中显示为空白或被掩盖。这是 iOS 提供的系统级保护,难以被绕过,因此在密码/高度敏感字段场景被广泛采用

基于该特性,可将敏感页面内容嵌入特定视图中,实现与输入框相同的防护效果。

实际起作用的是 _UITextLayoutCanvasView,将内容添加到该视图后,截屏或录屏时画面会变为空白。但由于该类是私有 API,无法直接使用,可通过创建启用 secureTextEntry 的 UITextField,再遍历其内部层级来获取实际生效的安全视图。

- (UIView *)makeSecureView {
     UITextField *field = [[UITextField alloc] init];
     field.secureTextEntry = YES;
     UIView *secureView = field.subviews.firstObject;
     for (UIView *sub in secureView.subviews) {
           [sub removeFromSuperview];
     }
     secureView.userInteractionEnabled = YES;
     return secureView;
 }

该方案的效果与京东金融类似,截屏或录屏只会得到空白画面,可有效防止信息泄露。

为避免用户误以为是异常,京东金融会弹出提示,而大参林内部 App 则进一步优化,支持自定义防截屏/录屏页面,可在 _UITextLayoutCanvasView 前插入个性化内容进行展示

if (_screenView) {
     // 外部传入自定义截图
     [_screenView removeFromSuperview];
     [super addSubview:_screenView];
     _screenView.translatesAutoresizingMaskIntoConstraints = NO;
}
// 安全视图      
[self addSubview:_secureView];

呈现的效果是用户截屏就会得到自定义的内容,且内容可以多元化,尽可能描述当前操作的风险,避免用户误解(如图)

image.png

 

显性水印

显性水印是一种可见的安全防护手段,通过在页面上叠加用户身份相关标识(如手机号、工号、设备号、时间戳等),使每一次截屏都带有「来源信息」,这种方式可有效震慑潜在的泄密行为,并在信息外传后实现快速溯源与责任定位。

适合展示敏感信息的页面,如订单、报表、价格、财务数据、内部沟通记录等。

显性水印方法的特点在于:通用性强、可定制性高、震慑效果明显,同时方案也需要注意以下事项:

  • 避免影响阅读

    • 建议水印透明度控制在 0.05~0.15。
    • 使用斜向排列,减少和正文的干扰。
  • 密度与性能

    • 水印过密会影响性能,建议 2~3 行文字循环平铺。

    • 用CALayer替代UILabel,减少内存占用。

  • 内容多样性

    • 不仅仅用手机号,可以混合「手机号 + 时间戳 + App 名称」。

    • 让每次截屏的水印都唯一,增强溯源性。

  • 防裁剪设计

    • 在页面边缘也布满水印,避免用户通过裁剪轻松去除。

 

隐形水印

隐形水印则是利用肉眼难以察觉的低透明度文字,在正常使用中几乎不可见,但通过调整 曝光、对比度、饱和度、鲜明度 后会显现出来。

核心在于UI渲染层叠加一层极低透明度的用户身份信息,用户不可见,不打扰用户使用体验,截屏传播时,可通过调节图像参数识别水印来源。

根据APP的不同页面背景场景,可以根据颜色/alpha/偏移策略进行选择,最大程度保障贴合背景色

背景场景推荐颜色Alpha 建议值布局策略显影测试效果
白底/浅色背景[UIColor colorWithWhite:0 alpha:0.02](浅黑灰)0.015 ~ 0.025双层错位叠加,旋转差 5°,偏移 2px提升对比度时,文字在暗通道浮现
深色背景[UIColor colorWithWhite:1 alpha:0.02](接近白色)0.015 ~ 0.03双层叠加,间距 1px,旋转差 8°提升曝光时,亮部通道可见
彩色图片/高饱和度背景[UIColor colorWithRed:0.01 green:0.02 blue:0.00 alpha:0.02](深绿偏色)0.02 ~ 0.03随机 ±2px 偏移,tile 交错铺设调高饱和度时,某些通道浮现
渐变/复杂图案背景随机 R/G/B 偏移:0.02 ± 0.0050.02 ~ 0.03三层叠加:黑/蓝/绿,透明度差异在不同通道下至少有一层能显影

实践后的效果(如下图),在页面没有任何水印遮挡,正常观看下不可见,通过调整截图的曝光、对比度、饱和度、鲜明度即可显现,不影响用户体验,隐秘性强,适合内部取证。

 

总结

在大参林企业内部APP的实践中,我们深刻认识到,移动端数据防泄漏不能依赖单一手段,而必须通过“业务需求 + 技术防护”的组合拳形成合力。

这种业务 + 技术协同的防护模式,不仅显著增加敏感数据泄露的成本,也实现了用户体验与合规性的平衡。同时也暴露出新的挑战:

  • 行为层面:仍无法防止外设拍照或截图裁剪等间接泄漏;

  • 技术层面:如何在跨端框架(如 uni-app、Flutter、H5)中统一实现防截屏与防录屏,仍需持续攻关

声明

  • 以上内容如有侵权,请联系更正
  • 转载请注明出处