接入金融理财H5活动遇到的问题备忘(防截屏,检查ROOT,金融理财h5安全,混淆不回调)

来源:互联网 发布:r语言编程代码 编辑:程序博客网 时间:2024/06/11 16:23

emmmm...

APP内接入的 金融理财H5活动告一段落,想想,还是准备把这记录一下吧.

看到这篇博文,碰到相关问题,请全局搜索关键字.


遇到了3个问题.

1.因为是金融理财产品,要求在进入该h5页面时,需要进行安全检查,要求防录屏...

看到这个要求一脸懵逼,然后网上查了下,完全没有啊.

想到的办法是,对手机内安装的软件进行包名检查,本地更新或者后台传输 录屏软件包名库...

但是感觉好鸡儿蛋疼.

最后突然转换了个思路,不记得之前是在什么时候看过这么一篇文章,作者讲的是 破解一款PC和Android同步操作的软件的博文,

其中讲出,其最主要的方法就是 Android截屏方法

View.getDrawingCache()
那我直接防止截屏即可.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
加上这个,完美解决,进行测试,发现可以录屏,但是录屏的内容是一片黑色.OK


2.还是因为是金融理财产品,要求在进入该H5页面时,需要进行安全检查,要求检查是否ROOT..

这个,网上一搜一大把.

贴一个我正在用的.

** * @author Kevin Kowalewski */public class CheckRootUtils {    public static boolean isDeviceRooted() {        return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();    }    private static boolean checkRootMethod1() {        String buildTags = android.os.Build.TAGS;        return buildTags != null && buildTags.contains("test-keys");    }    private static boolean checkRootMethod2() {        String[] paths = {"/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su",                "/system/bin/failsafe/su", "/data/local/su", "/su/bin/su"};        for (String path : paths) {            if (new File(path).exists()) return true;        }        return false;    }    private static boolean checkRootMethod3() {        Process process = null;        try {            process = Runtime.getRuntime().exec(new String[]{"/system/xbin/which", "su"});            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));            if (in.readLine() != null) return true;            return false;        } catch (Throwable t) {            return false;        } finally {            if (process != null) process.destroy();        }    }}

3.该问题是在测试完毕,进行混淆打包后产生的. 混淆打包后,不管是测试还是生产环境,页面均无法调起.

在测试的h5页面的控制台发现:

JS调用JAVA方法 OK

JAVA回调JS方法  不OK.

webView.loadUrl("javascript:XXXXX.callback(\"" + token + "\"," + json + ")");

这个方法没有调用.

emmmm...

还是偷懒网上找轮子.

再贴一个现在用的:


在混淆配置文件内添加:

-keepclassmembers class XXX.YYY$ZZZ{    public *;  }    -keepattributes *Annotation*  -keepattributes *JavascriptInterface* 

其中XXX为包名,YYY为该H5页面类名,ZZZ为包含各种JAVA与JS互调,有@JavascriptInterface注解方法的内部类名


以上...就是这次接入H5 金融理财遇到的主要问题.

阅读全文
0 0
原创粉丝点击