Разрешение 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.

Кинга Идем в IT: пошаговый план для смены профессии

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

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

Разрешение использования как 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.