我需要获得包签名,目前我使用以下代码获得它:
Signature[] sigs = c.getPackageManager()
.getPackageInfo(c.getPackageName(),
PackageManager.GET_SIGNATURES).signatures;然而,Android给了我这个警告:
从getPackageInfo读取应用程序签名:如果没有正确验证,应用程序签名可能被利用;有关详细信息,请参阅问题说明。 不正确地验证应用程序签名可能会导致恶意应用程序向Play Store提交其真实证书和假证书的问题,并访问它不应该拥有的功能或信息,这是因为另一个应用程序只检查假证书,而忽略了其他应用程序。请确保验证此方法返回的所有签名。
在这种情况下验证签名意味着什么?我要在服务器上检查签名,以确保它们匹配--这就是它们的意思吗?
在本地测试中,它只输出一个负整数,而不是代码所包含的数组。
发布于 2016-09-06 11:46:47
跟踪弹出文本将导致Android的这个源代码片段。
在同一个文件中,有一个一条线,它包含指向外部资源的链接。
进一步跟踪导致这份报告关于“假ID”漏洞。
对问题的描述
问题是,当Android构建信任链时,验证过程只比较“subject”,而不是将实际密钥与证书签名者的详细信息中提供的密钥进行比较。因此,攻击者可以修补信任链,并声称是由一方签署的,而没有实际签署。 由于这个错误,会生成错误的证书链,并且可能包含合法的证书,这些证书嵌入在APK中,但并没有用于对应用程序进行实际签名。
下面是承诺到Android的源代码,防止使用此漏洞。这意味着如果设备上有Android4.4,问题就不会发生。当运行较低的Android设备时,可能会造成危害。
https://stackoverflow.com/questions/39192844
复制相似问题