美文网首页Android拾萃
Android-隐私合规检测SDK

Android-隐私合规检测SDK

作者: 余瑜雨鱼 | 来源:发表于2021-12-05 11:37 被阅读0次

    背景

    从去年开始,工信部对APP个人隐私要求越来越多,之后各大应用市场也开始要求,有违规情况的会导致APP下架或者无法上架。

    技术方案简介

    方案很简单,动态代理+反射hook系统服务,拦截方法调用堆栈产出Excel结果. 按需自取

    项目地址

    支持的hook函数列表

    [图片上传失败...(image-9b79bf-1638675385938)]

    传送门

    接入方式

        1. 在根目录的build.gralde下添加
        allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
        }
    
        2. 在项目中的build.gralde下添加
          implementation 'com.github.allenymt:PrivacySentry:0.0.7'
    
        3. 初始化方法最好在attachBaseContext中第一个调用!!!
    
        4.1 简易版初始化
        在代码中调用,越早越好,建议在application中调用
        kotlin:PrivacySentry.Privacy.init(this)
        java:PrivacySentry.Privacy.INSTANCE.init(this);
    
        4.2 完成功能的初始化
         // 完整版配置
            var builder = PrivacySentryBuilder()
                // 自定义文件结果的输出名
                .configResultFileName("demo_test")
                //自定义检测时间,也支持主动停止检测 PrivacySentry.Privacy.stopWatch()
                .configWatchTime(5 * 60 * 1000)
                // 文件输出后的回调
                .configResultCallBack(object : PrivacyResultCallBack {
                    override fun onResultCallBack(filePath: String) {
                        PrivacyLog.i("result file patch is $filePath")
                    }
                })
            PrivacySentry.Privacy.init(this, PrivacySentry.Privacy.defaultConfigHookBuilder(builder))
            
            
            java
             // 完整版配置
            PrivacySentryBuilder builder = new PrivacySentryBuilder()
                    // 自定义文件结果的输出名
                    .configResultFileName("buyer_privacy")
                    //自定义检测时间,也支持主动停止检测 PrivacySentry.Privacy.stopWatch()
                    .configWatchTime(30 * 1000)
                    // 文件输出后的回调
                    .configResultCallBack(new PrivacyResultCallBack() {
    
                        @Override
                        public void onResultCallBack(@NonNull String s) {
    
                        }
                    });
            PrivacySentry.Privacy.INSTANCE.init(this, PrivacySentry.Privacy.INSTANCE.defaultConfigHookBuilder(builder));
    
        4.3 在隐私协议确认的时候调用,这一步非常重要!,一定要加
        kotlin:PrivacySentry.Privacy.updatePrivacyShow()
        java:PrivacySentry.Privacy.INSTANCE.updatePrivacyShow();
    
        5 支持多进程,多进程产出的文件名前缀默认增加进程名
    
    传送门

    结果查看

    1. 默认拦截隐私方法时间为3分钟,支持自定义设置时间排查结果可参考目录下的demo_result.xls
    2. 排查结果支持两个维度查看,第一是结合隐私协议的展示时机和敏感方法的调用时机,第二是统计所有敏感函数的调用次数
    3. 排查结果可观察日志,结果文件会在 /storage/emulated/0/Android/data/yourPackgeName/files/privacy/yourFileName.xls,需要手动执行下adb pull
    
    传送门

    在这里放一张截图,隐私确认和隐私函数调用顺序一目了然

    fc06d3f8b941489aae6a979888438d59_tplv-k3u1fbpfcp-watermark.png

    结语

    在引入SDK时,注意不要把代码带到线上
    本SDK检测结果只做参考~

    相关文章

      网友评论

        本文标题:Android-隐私合规检测SDK

        本文链接:https://www.haomeiwen.com/subject/odpixrtx.html