iOS
Безопасность транспорта приложений (ATS)
Поиск…
параметры
параметр | подробности |
---|---|
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 следующее:
- Разрешить конкретный домен (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) также должны быть разрешены.
- Разрешить любой домен:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
В этом случае приложение разрешает HTTP-подключение к любому домену. По состоянию на 1 января 2017 года использование этого флага приведет к тщательной проверке App Store, и разработчики приложений должны будут объяснить, почему они должны использовать это исключение в первую очередь. Возможные пояснения:
- Приложение, которое загружает зашифрованный мультимедийный контент, который не содержит персонализированной информации.
- Соединения с устройствами, которые не могут быть обновлены для использования защищенных соединений.
- Подключение к серверу, которому управляет другой объект, и не поддерживает безопасные соединения.