Разрешение HTTP и HTTPS запросов в Android 9 Pie

Пройдите тест, узнайте какой профессии подходите
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для разрешения работы по протоколам HTTP и HTTPS в Android 9, следует настроить параметры безопасности сетевого подключения приложения таким образом:

  1. Создайте файл res/xml/network_security_config.xml:
xml
Скопировать код
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
  1. Добавьте ссылку на указанный файл в AndroidManifest.xml:
xml
Скопировать код
<application
    android:networkSecurityConfig="@xml/network_security_config"
    ...>
    ...
</application>

Установка параметра cleartextTrafficPermitted="true" позволит вашему приложению работать по протоколу HTTP. Однако не забывайте, что безопасность гарантируется использованием HTTPS.

Пошаговый план для смены профессии

Разъяснение концепций сетевой безопасности

Безопасность против гибкости

Разрешение использования как HTTP, так и HTTPS может быть необходимым для определенных приложений, однако следует помнить, что такая стратегия может увеличивать риски безопасности. Используйте HTTPS там, где это возможно, и разрешайте HTTP исключительно для проверенных доменов.

Изменения в поведении по умолчанию

В Android 9 Pie атрибут usesCleartextTraffic по умолчанию установлен как false. Это означает, что приложения, для которых целевым API является уровень 28 и выше, не смогут отправлять или получать открытый незашифрованный трафик без явного разрешения. Для приложений с уровнем API 27 и ниже значение по умолчанию — true.

Усиление защиты определенных доменов

Вы можете более детально настроить защиту для конкретных доменов в network_security_config.xml, задав нужные параметры для каждого из них. Например, для домена example.com:

xml
Скопировать код
<domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">example.com</domain>
</domain-config>

И React Native тоже!

Политика безопасности также относится к приложениям на React-Native. Измените соответствующий react_native_config.xml, чтобы обеспечить соответствующие настройки безопасности.

Профессиональные советы для разработчиков

Отладка и тестирование

Прежде чем выпустить приложение, обязательно проведите его тестирование, особое внимание уделяя возможным уязвимостям и проблемам безопасности.

Работа с устаревшим кодом

Если вам требуется поддерживать устаревшие HTTP API, воспользуйтесь следующим кодом:

xml
Скопировать код
<uses-library android:name="org.apache.http.legacy" android:required="false"/>

Для новых проектов рекомендуется использовать современные решения, например, OkHttp и Retrofit.

Локальные хосты и IP-адреса

Во время разработки убедитесь, что приложение корректно работает с локальными хостами и IP-адресами, так как в ходе разработки могут применяться исключения из общих правил безопасности.

Изучение возможных решений

Прежде чем отключить настройки TLS по умолчанию, проведите тщательное исследование и позаботьтесь о минимизации рисков.

Удовлетворение различных потребностей

Если приложению требуется гибкость в различных условиях, то использование и HTTP, и HTTPS может быть оправданным.

Визуализация

Трафик HTTP и HTTPS в Android Pie можно представить в виде дорог:

    HTTP  🛣️                      HTTPS  🛤️

📱 --------> 🌐 Android Pie воспринимает оба 📱 ----------> 🌐

Android Pie поддерживает оба типа подключений:

  • HTTP 🚗 (без защиты, могут быть прерваны)
  • HTTPS 🚙 (защищены шифрованием, имеют VIP-проход)
plaintext
Скопировать код
Наша цель – настроить проверку трафика таким образом, чтобы обеспечить свободное движение обоих видов подключений, гарантировав стабильное взаимодействие для приложения.

Полезные материалы

  1. Конфигурация безопасности сети | Android Developers — Официальная документация по настройке безопасности сети для Android.
  2. Обзор – OkHttp — Руководство по эффективному использованию HTTP-клиента OkHttp, оптимального для Android.
  3. HttpsURLConnection | Android Developers — Информация о работе с HTTPS-запросами через HttpsURLConnection.
  4. Android 8: Cleartext HTTP traffic not permitted | Stack Overflow — Обсуждение на Stack Overflow проблем с открытым трафиком в Android 8.
  5. Использование OkHttp | CodePath Android Cliffnotes — Практическое руководство по настройке политики безопасности сети с OkHttp от CodePath.
  6. Codelab по настройке безопасности сети Android | Android Developers — Учебный проект Google Codelab по настройке безопасности сети на Android.
  7. Retrofit — Retrofit, HTTP-клиент высокого уровня для Android и Java, облегчающий интеграцию API.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как в Android 9 разрешить использование HTTP и HTTPS?
1 / 5