Szukaj…


Parametry

Parametr Detale
NSAppTransportSecurity Skonfiguruj ATS
NSAllowsArbitraryLoads Ustaw na YES aby wyłączyć ATS wszędzie. W iOS 10 i nowszych oraz macOS 10.12 i nowszych wartość tego klucza jest ignorowana, jeśli którykolwiek z następujących kluczy znajduje się w pliku Info.plist aplikacji: NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking
NSAllowsArbitraryLoadsInMedia Ustaw na YES aby wyłączyć ATS dla nośników ładowanych przy użyciu interfejsów API ze środowiska AV Foundation. (iOS 10+, macOS 10.12+)
NSAllowsArbitraryLoadsInWebContent Ustaw na YES aby wyłączyć ATS w widokach aplikacji ( WKWebView , UIWebView , WebView ) bez wpływu na połączenia NSURLSession. (iOS 10+, macOS 10.12+)
NSAllowsLocalNetworking Ustaw na YES aby wyłączyć połączenia z domenami niekwalifikowanymi i domenami lokalnymi. (iOS 10+, macOS 10.12+)
NSExceptionDomains Skonfiguruj wyjątki dla określonych domen
NSIncludesSubdomains Ustaw na YES aby zastosować wyjątki do wszystkich poddomen wybranej domeny.
NSRequiresCertificateTransparency Ustaw na YES aby wymagać przedstawienia ważnych, podpisanych znaczników czasowych przejrzystości certyfikatu (CT) ze znanych dzienników CT dla certyfikatów serwera (X.509) w domenie. (iOS 10+, macOS 10.12+)
NSExceptionAllowsInsecureHTTPLoads Ustaw na YES aby zezwolić na HTTP w wybranej domenie.
NSExceptionRequiresForwardSecrecy Domyślnie YES ; Ustaw na NO aby wyłączyć Forward Secrecy i zaakceptować więcej szyfrów.
NSExceptionMinimumTLSVersion Domyślnie TLSv1.2 ; Możliwe wartości to: TLSv1.0 , TLSv1.1 , TLSv1.2
NSThirdPartyExceptionAllowsInsecureHTTPLoads Podobne do NSExceptionAllowsInsecureHTTPLoads , ale dla domen, nad którymi nie masz kontroli
NSThirdPartyExceptionRequiresForwardSecrecy Podobne do NSExceptionRequiresForwardSecrecy , ale dla domen, nad którymi nie masz kontroli
NSThirdPartyExceptionMinimumTLSVersion Podobne do NSExceptionMinimumTLSVersion , ale dla domen, nad którymi nie masz kontroli

Uwagi

App Transport Security to funkcja bezpieczeństwa w iOS i macOS. Zapobiega nawiązywaniu przez aplikacje niezabezpieczonych połączeń. Domyślnie aplikacje mogą korzystać wyłącznie z bezpiecznych połączeń HTTPS.

Jeśli aplikacja musi połączyć się z serwerem za pośrednictwem protokołu HTTP, w Info.plist należy zdefiniować wyjątki. (zobacz przykłady, aby uzyskać więcej informacji na ten temat)

Uwaga: w 2017 r. Apple będzie egzekwować ATS. Oznacza to, że nie można już przesyłać aplikacji, które mają wyjątki ATS zdefiniowane w Info.plist . Jeśli potrafisz podać dobre argumenty, dlaczego musisz użyć HTTP, możesz skontaktować się z Apple, a one pozwolą ci zdefiniować wyjątki. (Źródło: WWDC 2016 - Sesja 706 )

Więcej informacji na temat konfiguracji App Transport Security można znaleźć w dokumentacji CocoaKeys .

Załaduj całą zawartość HTTP

Firma Apple wprowadziła ATS z iOS 9 jako nową funkcję bezpieczeństwa w celu poprawy prywatności i bezpieczeństwa między aplikacjami i usługami internetowymi. ATS domyślnie nie spełnia wszystkich żądań innych niż HTTPS. Chociaż może to być naprawdę miłe w środowiskach produkcyjnych, może być uciążliwe podczas testowania.

ATS jest skonfigurowany w pliku Info.plist docelowego za pomocą słownika NSAppTransportSecurity ( App Transport Security Settings w edytorze Xcode Info.plist). Aby zezwolić na całą zawartość HTTP, dodaj wartość logiczną Allow Arbitrary Loads ( NSAllowsArbitraryLoads ) i ustaw ją na YES . Nie jest to zalecane w przypadku aplikacji produkcyjnych, a jeśli wymagana jest zawartość HTTP, zaleca się selektywne włączenie jej.

Selektywnie ładuj zawartość HTTP

Podobnie jak w przypadku włączania całej zawartości HTTP, cała konfiguracja odbywa się w App Transport Security Settings . Dodaj słownik Exception Domains ( NSExceptionDomains ) do ustawień najwyższego poziomu ATS.

Dla każdej domeny dodaj element słownika do domen wyjątków, gdzie kluczem jest dana domena. Ustaw NSExceptionAllowsInsecureHTTPLoads na YES aby wyłączyć wymaganie HTTPS dla tej domeny.

Punkty końcowe wymagają SSL

Wprowadzone w iOS 9 wszystkie punkty końcowe muszą być zgodne ze specyfikacją HTTPS.
Wszelkie punkty końcowe nieużywające protokołu SSL zakończą się niepowodzeniem z ostrzeżeniem w dzienniku konsoli. W Twojej aplikacji pojawi się komunikat, że połączenie internetowe nie powiodło się.

Aby skonfigurować wyjątki: Umieść następujące informacje w pliku Info.plist:

  1. Pozostawić szczególną domenę (testdomain.com) tylko:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
    <key>testdomain.com</key>
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
    </dict>
</dict>

Kluczem pozwalającym na takie zachowanie jest NSExceptionAllowsInsecureHTTPLoads . W takim przypadku aplikacja zezwoli tylko na połączenie HTTP ze wspomnianą domeną (testdomain.com) i zablokuje wszystkie pozostałe połączenia HTTP.

Klucz NSIncludesSubdomains określa, że wszystkie i wszystkie poddomeny wspomnianej domeny (testdomain.com) powinny być również dozwolone.

  1. Zezwalaj na dowolną domenę:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

W takim przypadku aplikacja pozwoli na połączenie HTTP z dowolną domeną. Od 1 stycznia 2017 r. Użycie tej flagi spowoduje dokładną ocenę App Store, a twórcy aplikacji będą musieli wyjaśnić, dlaczego przede wszystkim muszą korzystać z tego wyjątku. Możliwe wyjaśnienia obejmują:

  • Aplikacja ładująca zaszyfrowane treści multimedialne, które nie zawierają spersonalizowanych informacji.
  • Połączenia z urządzeniami, których nie można zaktualizować w celu korzystania z bezpiecznych połączeń.
  • Połączenie z serwerem zarządzanym przez inny podmiot i nieobsługującym bezpiecznych połączeń.


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow