如何修复 TrustManager 实施方式不安全的应用

来源:互联网 发布:淘宝怎么删除中评 编辑:程序博客网 时间:2024/05/16 07:56

/*问题描述:*/ googleplay已上架的应用收到安全警示或版本更新时遭拒绝更新,但是不会因此强制下架应用,此漏洞其违反了google开发者协议第4.4的相关规定。
/*问题难易度*/ * * *



/*导致问题的原因*/

自定义接口X509TrustManager中

public void checkServerTrusted(X509Certificate[] chain,String authType) throws java.security.cert.CertificateException {}方法中默认允许了所有的证书。


/*问题解决方法*/

1.有很多实际项目中会运用到多个第三方SDK,而遇到这个问题大多自己的代码中全局搜索并不会搜索到自定义 X509TrustManager 接口的 checkServerTrusted方法。问题就在于第三方的jar中,我不能确定问题到底存在于哪个SDK中所以我用了最笨的方法逐个排查删除jar包和逐个替换更新,每排除一个就上传一次就这样我被拒绝更新了三次。

2.本人遇到中Mob的ShareSDK 版本V2.7.4以下版本 而ShareSDK 官方更新文档中也明确注明了修复了此问题这个版本的发布日期:2016-07-11

http://wiki.mob.com/sharesdk-android-%E6%9B%B4%E6%96%B0%E5%8E%86%E5%8F%B2/

3.图灵机器人涉及的包为  tulingSDK1.x.jar  tulinghttp1.0.jar而早些版本为tulingmanager.jar

4.百度语音合成(TTS)com.baidu.speechsynthesizer_1.0.0.jar

5.举例更新ShareSDK

(1)下载最新版本的ShareSDK  ShareSDK-Android-2.7.x

(2)进入ShareSDK解压目录,打开“Share SDK for Android”目录,找到“QuickIntegrater.jar” 重新输入包名生成项目的替换文件。

(3)从生成好的项目包中的四个文件夹assets,libs,res,src到自己项目中对应的文件逐个Remove并替换。

6.问题代码段 

SSLContext sslContext = SSLContext.getInstance("TLS");      
     
   public SSLSocketFactoryEx(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {      
       super(truststore);      
     
       TrustManager tm = new X509TrustManager() {      
     
           public X509Certificate[] getAcceptedIssuers() {      
               return null;      
           }      
     
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws java.security.cert.CertificateException {
}


@Override
public void checkServerTrusted(X509Certificate[] chain,String authType) throws java.security.cert.CertificateException {

//chain[0].checkValidity();这里需要检验证书并抛异常throw new CertificateException
}  
       };      
     
       sslContext.init(null, new TrustManager[] { tm }, null);      
   }



0 0
原创粉丝点击