#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();