Поиск…


параметры

параметр подробности
NSAppTransportSecurity Настройка ATS
NSAllowsArbitraryLoads Установите YES чтобы отключить ATS повсюду. В iOS 10 и более поздних версиях и macOS 10.12 и более поздних версиях значение этого ключа игнорируется, если в файле Info.plist вашего приложения присутствует какой-либо из следующих ключей: NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking
NSAllowsArbitraryLoadsInMedia Установите YES для отключения ATS для носителя, загруженного с использованием API-интерфейсов из структуры AV Foundation. (iOS 10+, macOS 10.12+)
NSAllowsArbitraryLoadsInWebContent Установите YES для отключения ATS в веб-представлениях вашего приложения ( WKWebView , UIWebView , WebView ), не затрагивая ваши соединения NSURLSession. (iOS 10+, macOS 10.12+)
NSAllowsLocalNetworking Установите для YES для отключения для подключения к неквалифицированным доменам и к .local доменам. (iOS 10+, macOS 10.12+)
NSExceptionDomains Настройка исключений для определенных доменов
NSIncludesSubdomains Установите YES для применения исключений ко всем субдоменам выбранного домена.
NSRequiresCertificateTransparency Установите YES чтобы для сертификатов сервера (X.509) в домене были представлены действительные, подписанные отметки времени прозрачности (CT), из известных журналов CT. (iOS 10+, macOS 10.12+)
NSExceptionAllowsInsecureHTTPLoads Установите для YES чтобы разрешить HTTP в выбранном домене.
NSExceptionRequiresForwardSecrecy По умолчанию YES ; Установите NO чтобы отключить Forward Secrecy и принять больше шифров.
NSExceptionMinimumTLSVersion По умолчанию TLSv1.2 ; Возможные значения: TLSv1.0 , TLSv1.1 , TLSv1.2
NSThirdPartyExceptionAllowsInsecureHTTPLoads Подобно NSExceptionAllowsInsecureHTTPLoads , но для доменов, в которых у вас нет контроля над
NSThirdPartyExceptionRequiresForwardSecrecy Подобно NSExceptionRequiresForwardSecrecy , но для доменов, на которые у вас нет контроля над
NSThirdPartyExceptionMinimumTLSVersion Подобно NSExceptionMinimumTLSVersion , но для доменов, на которые у вас нет контроля над

замечания

Безопасность транспорта приложений - это функция безопасности в iOS и macOS. Это не позволяет приложениям устанавливать незащищенные соединения. По умолчанию приложения могут использовать только безопасные HTTPS-соединения.

Если приложение необходимо подключиться к серверу через HTTP, исключения должны быть определены в Info.plist . (см. примеры для получения дополнительной информации об этом)

Примечание. В 2017 году Apple будет применять ATS. Это означает, что вы больше не можете загружать приложения, имеющие исключения ATS, определенные в Info.plist . Если вы можете предоставить хорошие аргументы, почему вы должны использовать HTTP, вы можете связаться с Apple, и они могут позволить вам определять исключения. (Источник: WWDC 2016 - Сессия 706 )

Более подробную информацию о конфигурации безопасности для транспорта приложений можно найти в документации CocoaKeys .

Загрузка всего содержимого HTTP

Apple представила ATS с iOS 9 в качестве новой функции безопасности для улучшения конфиденциальности и безопасности между приложениями и веб-службами. ATS по умолчанию не выполняет все запросы без HTTPS. Хотя это может быть очень хорошо для производственных сред, это может быть неприятностью во время тестирования.

ATS настроен в файле Info.plist целевого объекта с NSAppTransportSecurity словаря NSAppTransportSecurity ( App Transport Security Settings в редакторе Xcode Info.plist). Чтобы разрешить весь HTTP-контент, добавьте параметр Allow Arbitrary Loads boolean ( NSAllowsArbitraryLoads ) и установите для него значение YES . Это не рекомендуется для производственных приложений, и если требуется HTTP-контент, рекомендуется его выборочно активировать.

Выборочно загружать контент HTTP

Подобно включению всего HTTP-содержимого, вся конфигурация происходит в соответствии с App Transport Security Settings . Добавьте словарь NSExceptionDomains Exception Domains ( NSExceptionDomains ) в настройки ATS верхнего уровня.

Для каждого домена добавьте элемент словаря в Исключительные домены, где ключ является доменом, о котором идет речь. Установите NSExceptionAllowsInsecureHTTPLoads в YES чтобы отключить требование HTTPS для этого домена.

Конечным точкам требуется SSL

Представленные в iOS 9, все конечные точки должны соответствовать спецификации HTTPS.
Любые конечные точки, не использующие SSL, не будут с предупреждением в журнале консоли. В вашем приложении появится сообщение об ошибке подключения к Интернету.

Чтобы настроить исключения: поместите в файл Info.plist следующее:

  1. Разрешить конкретный домен (testdomain.com) только:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
    <key>testdomain.com</key>
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
    </dict>
</dict>

Ключ, разрешающий такое поведение, - NSExceptionAllowsInsecureHTTPLoads . В этом случае приложение будет разрешать только HTTP-соединение с указанным доменом (testdomain.com) и блокировать все другие HTTP-соединения.

Ключевой NSIncludesSubdomains указывает, что все и все поддомены упомянутого домена (testdomain.com) также должны быть разрешены.

  1. Разрешить любой домен:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

В этом случае приложение разрешает HTTP-подключение к любому домену. По состоянию на 1 января 2017 года использование этого флага приведет к тщательной проверке App Store, и разработчики приложений должны будут объяснить, почему они должны использовать это исключение в первую очередь. Возможные пояснения:

  • Приложение, которое загружает зашифрованный мультимедийный контент, который не содержит персонализированной информации.
  • Соединения с устройствами, которые не могут быть обновлены для использования защищенных соединений.
  • Подключение к серверу, которому управляет другой объект, и не поддерживает безопасные соединения.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow