企业网站的类型有哪些,网站建设分为哪几个阶段,视频网站 做综艺 电视台,怀化建设公司网站目录 应用签名未校验风险1、检测目的2、风险等级3、检测依据4、风险描述5、检测步骤6、结果描述7、解决方案7.1、Android 检验 APK 是否签名的代码7.2、检验APK签名 8、结尾 应用签名未校验风险
1、检测目的
检测App程序启动时是否校验签名证书。
防止App的盗版率。未进行签… 目录 应用签名未校验风险1、检测目的2、风险等级3、检测依据4、风险描述5、检测步骤6、结果描述7、解决方案7.1、Android 检验 APK 是否签名的代码7.2、检验APK签名 8、结尾 应用签名未校验风险
1、检测目的
检测App程序启动时是否校验签名证书。
防止App的盗版率。未进行签名证书的App可能被反编译后进行二次打包。
重新打包签名的应用可能导致App被仿冒盗版影响其合法收入甚至可能被添加钓鱼代码、病毒代码、恶意代码导致用户敏感信息泄露或者恶意攻击。
2、风险等级
高。
3、检测依据
《GBT28448-2019 信息安全技术 网络安全等级保护测评要求》【移动应用管控】测评单元 (L3-CES3-04)应只允许指定证书签名的应用软件安装和运行。
【移动应用软件开发】测评单元 (L3-CMS3-04)应保证开发移动业务应用软件的签名证书合法性。
中国信息安全测评中心旗下“国家信息安全漏洞库“关联漏洞编号CNNVD-201307-154CVE-2013-4787《DL/T 2031-2019 电力移动应用软件测试规范》9.2.2.8.1 c基于Android开发的移动应用应对签名信息进行安全校验。
4、风险描述
签名证书是对App开发者身份的唯一标识开发者可利用签名证书有效降低App的盗版率。
未进行签名证书的App可能被反编译后进行二次打包。
重新打包签名的应用可能导致App被仿冒盗版影响其合法收入甚至可能被添加钓鱼代码、病毒代码、恶意代码导致用户敏感信息泄露或者恶意攻击。
5、检测步骤
对应用APK包进行重新签名打包。然后执行命令安装到android设备上查看是否安装成功同时启动重新签名的应用根据运行日志和执行任务栈分析是否可以成功启动且未弹出任何警告信息是则存在风险否则安全。
6、结果描述
如果App程序未对签名证书进行校验被其他证书重新签名后可以照常启动。
日志信息
--------- beginning of main
--------- beginning of system
12-19 09:21:57.693 113 304 I ActivityManager: START u0 {flg0x10000000 cmpcom.harry.demo/.activity.WelcomeActivity} from uid 2000 on display 0
12-19 09:21:57.713 113 496 I ActivityManager: Start proc 16142:com.harry.demo/u0a58 for activity com.harry.demo/.activity.WelcomeActivity
12-19 09:21:58.476 113 496 I ActivityManager: Start proc 16183:com.harry.demo:ipc/u0a58 for service com.harry.demo/io.rong.imlib.ipc.RongService
12-19 09:21:58.518 113 495 I ActivityManager: Start proc 16205:io.rong.push/u0a58 for service com.harry.demo/io.rong.push.rongpush.PushService
12-19 09:21:59.048 113 134 I ActivityManager: Displayed com.harry.demo/.activity.WelcomeActivity: 1s346ms (total 1m43s74ms)
12-19 09:22:00.617 113 495 I ActivityManager: START u0 {cmpcom.harry.demo/.activity.WelcomeGuideActivity} from uid 10058 on display 0
12-19 09:22:00.998 113 134 I ActivityManager: Displayed com.harry.demo/.activity.WelcomeGuideActivity: 375ms7、解决方案
App自行增加签名证书的校验代码或使用第三方签名校验保护功能降低应用被二次打包的风险。
7.1、Android 检验 APK 是否签名的代码
在 Android 开发中我们常常需要验证 APK 文件是否被正确签名。
APK 签名是一种保障应用安全性的重要方式通过验证签名可以确保 APK 文件的完整性和来源。
下面将介绍如何在 Android 中使用代码来检验 APK 是否签名。
public class ApkSignatureVerifier {public static String md5(byte[] bytes) {try {MessageDigest md5 MessageDigest.getInstance(MD5);byte[] digest md5.digest(bytes);StringBuilder sb new StringBuilder();for (byte b : digest) {sb.append(String.format(%02x, b 0xff));}return sb.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();return null;}}
}7.2、检验APK签名
获取到 APK 的签名信息后我们可以将其与预先保存的正确签名进行比较来验证 APK 是否被正确签名。
public class WelcomeActivity extends BaseActivity {private static final String VALID_SIGNATURE 69D4D6B18331A2B645286CC80435D605;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);hideTitleBar();getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);try {String pkgName getPackageName();PackageInfo mPkgInfo getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);Signature[] signatures mPkgInfo.signatures;for (Signature sign : signatures) {String md5 ApkSignatureVerifier.md5(sign.toByteArray());Log.e(WelcomeActivity , md5);assert md5 ! null;// 不区分大小写if (md5.equalsIgnoreCase(VALID_SIGNATURE)) {// APK 签名正确Log.e(APK Signature, 正确); } else {// APK 签名不匹配Log.e(APK Signature, 不匹配);ToastUtils.showShort(WelcomeActivity.this,App签名不匹配);finish();}}} catch (Exception e) {}}Overrideprotected View addContentLayout() {return getLayoutInflater().inflate(R.layout.activity_start, contentLayout, false);}
}在以上示例代码中我们将获取到的签名信息与一个预先保存的有效签名进行比较。如果签名匹配则说明 APK 签名是有效的如果签名不匹配则说明 APK 签名是无效的。
8、结尾
通过以上代码示例我们可以在 Android 开发中使用 Java 代码来检验 APK 是否签名。这样可以确保 APK 文件的完整性和来源从而提高应用的安全性。
在实际开发中我们可以将验证签名的逻辑应用在应用启动时或者下载 APK 文件后进行检验以确保应用的安全性。
以上是关于 Android 检验 APK 是否签名的代码示例希望能对你有所帮助