Ответ
App Transport Security (ATS) — это система безопасности, внедрённая Apple, которая принудительно требует использования безопасных сетевых соединений (HTTPS) для всего исходящего трафика приложения.
Цель: Защитить данные пользователя от перехвата и MITM-атак, обеспечивая шифрование по умолчанию.
Требования ATS по умолчанию:
- Соединение должно использовать TLS версии 1.2 или выше.
- Сертификаты должны быть валидными и подписанными доверенным центром сертификации (CA).
- Должно использоваться передовое шифрование (Forward Secrecy).
Настройка исключений в Info.plist:
Полное отключение ATS (NSAllowsArbitraryLoads) крайне не рекомендуется и требует обоснования при отправке в App Store. Вместо этого настраивайте исключения для конкретных доменов.
<key>NSAppTransportSecurity</key>
<dict>
<!-- Исключение для конкретного домена -->
<key>NSExceptionDomains</key>
<dict>
<key>api.insecure-example.com</key>
<dict>
<!-- Разрешить HTTP (без SSL) -->
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!-- Разрешить для всех поддоменов -->
<key>NSIncludesSubdomains</key>
<true/>
<!-- Требовать минимальную версию TLS 1.0 -->
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
</dict>
</dict>
</dict>
Практические советы:
- Для локальной разработки (localhost) ATS по умолчанию разрешает HTTP.
- Всегда стремитесь использовать HTTPS на бэкенде. Исключения — временная мера для легаси-серверов.
- Начиная с iOS 10, Apple ужесточила проверку обоснований для
NSAllowsArbitraryLoads.