Что такое App Transport Security (ATS) в iOS?

«Что такое App Transport Security (ATS) в iOS?» — вопрос из категории Сети, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.