Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PackageManager.GET_签名时出现Android Studio警告_Android_Android Studio_Android Studio 2.1 - Fatal编程技术网

使用PackageManager.GET_签名时出现Android Studio警告

使用PackageManager.GET_签名时出现Android Studio警告,android,android-studio,android-studio-2.1,Android,Android Studio,Android Studio 2.1,我需要获得软件包签名,目前我使用以下代码获得: Signature[] sigs = c.getPackageManager() .getPackageInfo(c.getPackageName(), PackageManager.GET_SIGNATURES).signatures; 但是,Android Studio给了我以下警告: 从getPackageInf

我需要获得软件包签名,目前我使用以下代码获得:

Signature[] sigs = c.getPackageManager()
                        .getPackageInfo(c.getPackageName(),
                                        PackageManager.GET_SIGNATURES).signatures;
但是,Android Studio给了我以下警告:


从getPackageInfo读取应用程序签名:如果没有正确验证,应用程序签名可能被利用;有关详细信息,请参阅问题说明

对应用程序签名的不正确验证可能会导致以下问题:恶意应用程序向Play Store提交其真实证书和假证书,并获得其不应有的功能或信息,因为另一个应用程序只检查假证书而忽略其余部分。请确保验证此方法返回的所有签名


在这种情况下,验证签名意味着什么?我将对照服务器检查签名,以确保它们匹配-这就是它们的意思吗


在本地测试中,它的所有输出都是一个负整数,而不是代码中的数组。

跟踪弹出文本将导致Android Studio的失败。
在同一个文件中,包含指向外部资源的链接。
进一步跟踪会导致对“假ID”漏洞的怀疑

:

问题在于,当Android构建信任链时,验证过程只比较“主体”,而不是将实际密钥与证书签名者详细信息中提供的密钥进行比较。因此,攻击者可以修补信任链并声称由一方签名——而该方实际上没有签名

由于这个错误,生成了一个错误的证书链,并且可能包含合法的证书,这些证书嵌入在APK中,但没有被用于对应用程序进行实际签名

以下是防止使用此漏洞的Android源代码。
这意味着,如果设备安装了安卓4.4,问题就不会发生。当运行较低版本的Android API设备时,可能会造成伤害。

我已经提交了申请,要求提供此类设备的真实文档。我会假设,只要你的“检查签名”算法是合理的,你就可以了。但是,由于我不清楚他们在警告什么,我无法确定。因此,这是一个已知的错误,可能会导致证书被泄露。它是“自动”修复的还是需要添加更多代码来解决/保护它?自KitKat以来,证书链替换或修改不会出现任何问题。但是,如果您真的想检查包的证书指纹,请查看一下(在较低API的设备上可能会有所帮助)。