Исправьте оповещение Google Play Security - Ваше приложение использует небезопасную реализацию HostnameVerifier - ДЛЯ ПЕРЕМЕННОЙ ССЫЛКИ НА САЙТ - PullRequest
0 голосов
/ 29 декабря 2018

Я использую HostnameVerifier для проверки URL своего хоста.

Сначала я использовал следующие строки кода для проверки имени хоста,

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

    });

Я получил ошибку ниже из консоли Google Play,

Your app(s) are using an unsafe implementation of the HostnameVerifier interface. You can find more information about how resolve the issue in this Google Help Center article.

Из ссылок ниже я узнал, что мне нужно вернуть false, если ожидаемое имя хоста не совпадает с методом verify ()

В моем случае имя хоста не является фиксированным хостом, оно переменное, мой поток похож на приведенный ниже, который не подлежит изменению.

  1. Клиентский сервер отправляет своему сотруднику SMS-сообщение, содержащее КОД ПРИГЛАШЕНИЯ, этот код содержит зашифрованный URL-адрес клиентского сервера, который будет варьироваться от клиента к клиенту, например

  2. Пользователь вводит этот код приглашения в поле EditText инажмите кнопку «Подтвердить» в моем приложении.

  3. Я получаю URL-адрес сервера из этого кода приглашения, который может бытьварьируется от клиента к клиенту и используется во всем приложении для всех вызовов сервера на всех следующих экранах.

Таким образом, мое имя хоста не является фиксированным, оно является переменной.

Следовательно, я использовал приведенные ниже строки кода для проверки хоста,

        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession arg1) {

            // Utility.getServerUrl() is the url which I get from invitation code, for ex. https://sony.com/ess
            String url = Utility.getServerUrl();   

            String[] arr = url.split("//");    // To remove https:// 
            url = arr[1];                      // Now  url = sony.com/ess
            url = url.split("/")[0];           // To get link excluding /ess

            //Now url = "sony.com", which may be vary by client to client

            if (hostname.equalsIgnoreCase(url) ||
                    hostname.equalsIgnoreCase("api.crashlytics.com") ||
                    hostname.equalsIgnoreCase("settings.crashlytics.com")) {
                return true;
            } else {
                return false;
            }
        }

    });

Я создал подписанный apk и снова загрузил в Google Play Store, но через полчаса мой последний apk был отклонен по той же причине.

Пожалуйста, помогите мне в этом вопросе.Заранее спасибо.

...