Как отключить закрепление SSL на Flutter?

#flutter #http #ssl #dio #sslpinning

Вопрос:

Мы используем Flutter для разработки приложений. Наши тестировщики безопасности сказали, что нам нужно отключить закрепление SSL в коде Flutter, чтобы они могли выполнить некоторый тест. Мы не смогли этого сделать. Мы используем пакет Dio для HTTP-запроса. Как мы можем отключить закрепление SSL на Flutter?

Ответ №1:

Редактировать:

Закрепление SSL не является поведением по умолчанию. Поэтому вам не нужно отключать его, если он еще не был включен.

Комментарии:

1. Я предполагаю, что эти коды предназначены для проверки наличия закрепления SSL и установки сертификата. Но нам не нужно это делать. Нам нужно отключить закрепление SSL в приложении Flutter.

2. Извините, я пропустил главное. Как уже упоминалось здесь, закрепление SSL не является поведением по умолчанию. Поэтому вам не нужно отключать его, если он еще не был включен. reddit.com/r/flutterhelp/comments/q2qsnk/comment/hfn0qdq

3. medium.com/surfstudio/ssl-pinning-in-flutter-apps-254e01e57965

4. если вы отредактируете свой ответ как «Закрепление SSL не является поведением по умолчанию. Поэтому вам не нужно отключать его, если он еще не был включен. » тогда я могу пометить ваш ответ как принятый ответ. Спасибо!

5. Я отредактировал ответ. Удачи!

Ответ №2:

Я столкнулся с аналогичной проблемой. Решение было довольно простым. HTTP-пакет автоматически предотвращает прослушивание сети.

Чтобы устранить эту проблему и повторно отправить ее для тестирования на проникновение, внесите эти изменения в файл main.dart:

 class MyHttpOverrides extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext context) {
    if (Platform.isAndroid) {
      return super.createHttpClient(context)..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
    }

    return super.createHttpClient(context)
      ..findProxy = (uri) {
        return "PROXY localhost:8080";
      }
      ..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
  }
}
 

и добавьте эту строку в метод main():

   HttpOverrides.global = MyHttpOverrides();