• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

Android RePlugin插件的安全与签名校验

JAVA web前端中文站 2年前 (2017-08-01) 1629次浏览 已收录 0个评论

作为一家安全公司旗下的开源项目,其“安全性”是作为其重点之一来考虑的。曾经有几个 App 在使用动态加载 Dex 方案(非 RePlugin)时,被爆出有可能携带“病毒”,经追查发现是由于没有对外来的 Dex 和 Apk 做“校验”导致。所以说,一旦不做校验,则不排除恶意人会劫持 DNS 或网络,并通过网络来下发恶意插件,对您的应用造成很不好的影响。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

Android RePlugin 插件的安全与签名校验

若开启此开关,则一旦签名校验失败,则会在 Logcat 中提示“verifySignature: invalid cert”,且 install 方法返回 null。

此外,出于性能考虑,内置插件无需做“签名校验”,仅“外置插件”会做。

要打开签名校验也是非常简单的。只需两步:

第一步:打开开关

例如,若您继承 RePluginApplication,则请在创建 RePluginConfig 时调用其 setVerifySign(true) 即可。

当然,更推荐的做法是传递 !BuildConfig.DEBUG 参数。这表示:若为 Debug 环境下则无需校验签名,只有 Release 才会校验。以下是具体用法:

 @Override protected RePluginConfig createConfig() {  RePluginConfig c = new RePluginConfig();  c.setVerifySign(!BuildConfig.DEBUG);  ...  return c; }

如果您是“非继承式”,则需要在调用 RePlugin.App.attachBaseContext() 的地方,传递 RePluginConfig,并设置 setVerifySign 即可。以下是具体用法:

 RePluginConfig c = new RePluginConfig(); c.setVerifySign(!BuildConfig.DEBUG); ... RePlugin.App.attachBaseContext(context, c);

自 RePlugin 2.1.4 版本开始,默认将“关闭”签名校验,之前默认为“开启”。

第二步:加入合法签名

光是打开其开关还是不够的,还应该将“合法的签名”加入到 RePlugin 的“白名单”中,可调用 RePlugin.addCertSignature() 来完成。例如:

 // Add signature to "White List" RePlugin.addCertSignature("379C790B7B726B51AC58E8FCBCFEB586");

其中,其参数传递的是签名证书的 MD5,且去掉“:”’。
请务必去掉“:”,且不要传递 SHA1 或其它非签名 MD5 内容
获取签名的做法有很多,比较推荐的是使用 keytool 工具,可参见此文档的介绍。
出于性能考虑,RePlugin 不会自动将“主程序签名”加入进来。如有需要,建议您自行加入。

最佳实践

以下为 360 手机卫士或其它合作 App 采用的设计,可供您参考:

【注:本文源自网络文章资源,由站长整理发布】

  • 强烈建议开启安全和签名校验
  • 若在调用 install 方法前就已对 APK 做了校验(例如,手机卫士是 云控加密 MD5 + V5 签名校验),则可关闭,以避免重复校验
  • 请尽量不要使用和“主程序”一样的签名,而是单独创建一个

web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Android RePlugin 插件的安全与签名校验
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址