App安全

代码混淆

Android

框架使用Proguard对源码进行混淆处理,Proguard是一个Java类文件压缩器、优化器、混淆器、预校验器。压缩环节会检测以及移除没有用到的类、字段、方法以及属性。优化环节会分析以及优化方法的字节码。混淆环节会用无意义的短变量去重命名类、变量、方法。这些步骤让代码更精简,更高效,也更难被逆向(破解)。
为了使三方开发能正常使用框架功能,部分框架提供的类及方法应当被保持不被混淆:

-keep class com.hundsun.frameworkgmu.** { *; }
-keep class com.hundsun.gmubase.** { *; }
-keep class com.hundsun.h5update.** { *; }
-keep class com.hundsun.hybrid.** { *; }
-keep class com.hundsun.JSAPI.** { *; }
-keep class com.hundsun.plugin.** { *; }
-keep class com.hundsun.update.** { *; }
-keep class com.hundsun.webresourcespace.** { *; }
-keep class com.hundsun.webresourceupdate.** { *; }
-keep class com.hundsun.jsnative.** { *; }
-keep class com.hundsun.webgmu.** { *; }
-keep class com.alibaba.** { *; }
-keep class com.taobao.gcanvas.GCanvasJNI {
*** bindTexture(...);
*** init(...);
*** sendEvent(...);
*** setContextType(...);
*** setDevicePixelRatio(...);
*** texSubImage2D(...);
*** registerCallback(...);
}
-keep class com.taobao.weex.bridge.** { *; }
-dontwarn com.taobao.weex.bridge.**

App防root

Android

框架提供了appsecurity.gmu配置文件入口用于防root提示,如果配置rootAlerttrue在App启动完成后会判断当前设备是否已root,框架在启动完成后会判断当前设备是否已Root,如果设备已Root则弹窗“请勿在Root的设备上使用该应用!”来对用户进行提醒。

// appsecurity.gmu配置示例
{
"config" : {
"rootAlert" : true
}
}

App防模拟器运行

Android

框架提供了appsecurity.gmu配置文件入口用于防模拟器提示,如果配置simulatorEnablefalse在App启动完成后会判断当前设备是否运行在模拟器,框架在启动完成后会判断当前设备是否为Android模拟器,如果为模拟器则弹窗“请勿在模拟器上使用该应用!”来对用户进行提醒。

// appsecurity.gmu配置示例
{
"config" : {
"simulatorEnable" : false
}
}

App防越狱

iOS

框架提供了appsecurity.gmu配置文件入口用于防越狱提示,如果配置rootAlerttrue在App启动完成后会判断当前设备是否已越狱,如果设备已越狱则弹窗“检测到您的设备已越狱”来对用户进行提醒。

// appsecurity.gmu配置示例
{
"config" : {
"rootAlert" : true
}
}

App防重签名

iOS

框架提供了appsecurity.gmu配置文件入口用于防重签名提示,如果配置checkSignature为true在App启动完成后会判断当前设备是否被重签名,如果设备已被被重签名则弹窗“检测到App已被重签名,存在安全风险”来对用户进行提醒。

// appsecurity.gmu配置示例
{
"config" : {
"checkSignature" : true
}
}

安全输入

框架提供了安全键盘组件,同时安全键盘组件还提供了JSAPI用于在前端页面中使用安全键盘,使用方式如下:

let params={
"textShow" :"InstantAsterisk",
"disorder" :"numberAndAlpha",
"pressEffect" :"default",
"keyboardType" :"alpha",
"maxLength" : 11,
"encryptMode" :"MD5",
"titleText" :"adasdasd",
}
LightSDK.native.safekeyboardShow(params, (result) => {});

安全传输

Light平台提供了移动网关服务,客户端直接向移动网关发送请求,移动网关通过对HTTPS和HTTP报文签名来保证数据被安全传输,当网关收到请求后再将请求转发到业务后端服务上。框架提供了移动网关请求的JSAPI来供前端页面向移动网关发送请求,调用示例如下:

let params = { 
"method": "post",
"path": "mgw/hello",
"headers": {
"custom": "Light"
},
"data": {
"compony": "Hundsun"
}
}
LightSDK.net.execute(params, (result) => {});

唤醒密码

框架的本地验证组件提供了App唤醒密码功能,ios本地验证组件提供了三种验证方式:手势密码、Touch ID和Face ID,android本地验证组件提供了两种验证方式:手势密码和指纹识别。以上验证方式均可通过JSAPI调用,调用示例:

let params={
"verifyType":"FP" // FP为Touch ID(ios)、Face ID(ios)、指纹识别(android),GL为手势密码
}
LightSDK.native.verifyOpeation(params, (result) => {});