使用PackageManager.GET_SIGNATURES时的Android Studio警告

Zoe*_*Zoe 17 android android-studio android-studio-2.1

我需要获得包签名.所以我使用这段代码得到它:

Signature[] sigs = c.getPackageManager().getPackageInfo(c.getPackageName(),
    PackageManager.GET_SIGNATURES).signatures;
Run Code Online (Sandbox Code Playgroud)

但Android Studio给了我这个警告:


从getPackageInfo读取应用程序签名:如果未正确验证,则可以利用应用程序签名; 请参阅问题说明了解详情.

对应用程序签名的不正确验证可能会导致恶意应用程序使用其真实证书和伪造证书向Play商店提交自身的问题,并且由于另一个应用程序仅检查虚假证书而获得对其不应具有的功能或信息的访问权限并忽略其余的.请确保验证此方法返回的所有签名.


在这种情况下验证签名是什么意思?我要检查服务器的签名以确保它们匹配,这是什么意思?

在本地测试时,所有输出都是单个负数Integer,而不是 array代码所具有的.

R. *_*ski 14

跟踪弹出文本会导致Android Studio的源代码片段.
在同一文件中,有一行包含指向outern资源的链接.
进一步跟踪导致此演示文稿关于"假ID"漏洞.

问题描述:

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

由于此错误,会生成错误的证书链,并且可能包含合法证书,这些证书嵌入在APK中但未用于实际签署应用程序.

以下是对Android源代码的提交,可防止使用此漏洞.这意味着如果该设备具有Android 4.4,则问题不会发生.运行较低的Android API设备时,可能会造成伤害.

  • 因此,这是一个已知的错误,可能导致证书被泄露.是"自动"修复还是需要添加其他代码才能解决/防范它? (2认同)