2017-10-05 3 views
-1

Quand je télécharger mon application pour Playstore il montre l'avertissementvotre application utilise la mise en œuvre dangereuse du vérificateur de nom d'hôte

« votre application utilise la mise en œuvre dangereuse du vérificateur de nom d'hôte »

Comment résoudre ce problème.

SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new SecureRandom()); 
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFa‌​ctory()); 
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { 

@Override public boolean verify(String arg0, SSLSession arg1) { 

     return true; 
    } 
}); 
+0

Java doit être mentionné là-dedans. Veuillez le poster aussi. –

+0

SSLContext sc = SSLContext.getInstance ("SSL"); sc.init (null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory (sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier (nouveau HostnameVerifier() { @Override public boolean vérifier (String arg0, SSLSession arg1) { return true;} }); –

+0

ceci est le code que j'avais utilisé –

Répondre

1

Vous utilisez une implémentation non sécuritaire de l'interface HostnameVerifier ici

HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { 
    @Override public boolean verify(String arg0, SSLSession arg1) { 
     return true; 
    } 
}); 

Playstore est assez stricte à ce sujet ces jours-ci. Vous pouvez vérifier cette link pour plus d'informations.

Au lieu de true, renvoyez false à chaque fois que le nom d'hôte du serveur ne répond pas à vos attentes.

Au lieu d'utiliser le nom de classe

@Override 
public boolean verify(String arg0, SSLSession arg1) { 
    HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier(); 
    return hv.verify("your_domain.com", arg1); 
} 
+0

merci l'homme et ça a fonctionné –