Android-隱私合規(guī)檢測SDK

背景

從去年開始,工信部對APP個人隱私要求越來越多,之后各大應用市場也開始要求,有違規(guī)情況的會導致APP下架或者無法上架。

技術方案簡介

方案很簡單,動態(tài)代理+反射hook系統服務,攔截方法調用堆棧產出Excel結果. 按需自取

項目地址

支持的hook函數列表

傳送門

接入方式

    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,需要手動執(zhí)行下adb pull

傳送門

在這里放一張截圖,隱私確認和隱私函數調用順序一目了然

結語

在引入SDK時,注意不要把代碼帶到線上
本SDK檢測結果只做參考~

本文轉自 https://juejin.cn/post/7037046252881575944,如有侵權,請聯系刪除。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容