Android APP安全处理那些事

2022-07-29 09:39:00 浏览数 (2)

前言

公司的项目有安全合规方面的需求,上线前要经过安全架构师进行安全测试,安全测试通过才能上线,目前 APP 项目中涉及到的点整理如下

技术方面
  • 打包签名
    • APP里面的基本操作,使用打包服务器上的签名,日常开发测试可以使用同一签名文件(.keystore 文件)用于本地功能测试,如APP更新需要保证签名一致
  • APP打包加固
    • APK防反编译
    • 壳加密算法保护
    • DEX文件整体加固保护
    • DEX文件防篡改
    • 加固壳防动态调试
    • 防内存dump保护
    • 防内存数据读取
    • 使用腾讯云的"移动应用安全" -> "应用加固"
    • 免费版基础加固内容包含
    • APP安全所有功能加固使用对应的付费即可
    • 腾讯云:https://console.cloud.tencent.com
  • console.* 移除
    • 安全检测工具检测出的日志输出
    • 使用 babel 插件 babel-plugin-transform-remove-console 移除 console
    • React Native 官方文档:https://reactnative.cn/docs/0.66/performance#consolelog-语句
  • 录音,图片文件存储必须在APP内部,而非外部用户可访问文件位置
    • 文件存储使用 react-native-fs 库,文件存储位置使用 DocumentDirectoryPath 属性
  • SSL 证书使用 HTTPS,线上环境的APP接口运维提供的都是HTTPS
  • APP 更新升级使用工作空间里的更新策略
    • APP 不走应用商店发布
    • APP中实现的强制更新和热更新功能弃用
业务方面
  • 首次打开强制登录
  • 登录后再次激活APP后,要输入用户手势
  • 密码复杂度要高,长度8位以上,必须包含大小写字母,数字,特殊符号
  • 用户名密码错误提示:必须提示 "用户名或密码错误" , 而不能提示 "密码错误"
  • 请求参数加密, 使用 AES256 对称加密
  • APP操作日志文件里不能保存业务敏感数据
手机出厂后系统自动安装的工作空间(安全软件/寻踪管家)安全策略
  • 不支持用户使用 USB 调试及文件传输功能,USB线只能充电
  • 不支持用户自定义手机权限
  • 不支持用户访问手机文件系统,浏览器等常规功能
  • 定制版的手机只支持访问当前用户的工作空间里面的工作 APP 和 地图两个软件
  • 接打电话,拍照,录音等业务操作手机上没有操作入口,只能由APP功能唤起
  • 用户不操作手机5分钟会自动锁屏,再次唤醒手机需要先输入工作空间的手势密码
  • 手机打开会自动打开工作空间,首次使用工作空间会强制登录,登录后再次打开工作空间

注意

工作空间中的策略会影响部分APP功能的正常使用,开发过程中APP直接在Android系统中测试OK的功能,在工作空间发布运行后不一定正常,异常情况包含:

  • 录音过程监听来电异常
  • 定位获取异常
  • 拍照保存异常
  • 录音功能异常
  • APP强制更新功能异常(后来APP更新使用工作空间的更新策略)

手机出厂刷机自带的工作空间这里的坑太大,工作空间的策略发布管理权限不在我们开发人员这里,在公司的业务IT那边,关于工作空间的测试,只能拿着手机去隔壁楼的IT那边刷机,开发再运行开发模式测试, 也导致了线上问题复现排查困难增大

目前项目中的涉及到的安全策略就这些,欢迎补充 ^-^

0 人点赞