Suche…


Parameter

Parameter Einzelheiten
NSAppTransportSecurity ATS konfigurieren
NSAllowsArbitraryLoads Stellen Sie YES , um ATS überall zu deaktivieren. In iOS 10 und höher und MacOS 10.12 und höher wird der Wert dieses Schlüssels ignoriert, wenn in der Info.plist-Datei Ihrer App einer der folgenden Schlüssel vorhanden ist: NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking
NSAllowsArbitraryLoadsInMedia Stellen Sie YES , um den ATS für Medien zu deaktivieren, die mit APIs aus dem AV Foundation Framework geladen wurden. (iOS 10+, MacOS 10.12+)
NSAllowsArbitraryLoadsInWebContent Setzen Sie diese Option auf YES , um ATS in den WKWebView Ihrer App ( WKWebView , UIWebView , WebView ) zu UIWebView , ohne dass Ihre NSURLSession-Verbindungen beeinträchtigt werden. (iOS 10+, MacOS 10.12+)
NSAllowsLocalNetworking Setzen Sie diese YES auf YES , um Verbindungen zu nicht qualifizierten Domänen und zu lokalen Domänen zu deaktivieren. (iOS 10+, MacOS 10.12+)
NSExceptionDomains Konfigurieren Sie Ausnahmen für bestimmte Domänen
NSIncludesSubdomains Stellen Sie YES , um die Ausnahmen auf alle Unterdomänen der ausgewählten Domäne anzuwenden.
NSRequiresCertificateTransparency Stellen Sie YES ein, um gültige, signierte CT-Zeitstempel (Certificate Transparency) aus bekannten CT-Protokollen für Serverzertifikate (X.509) in einer Domäne vorzulegen. (iOS 10+, MacOS 10.12+)
NSExceptionAllowsInsecureHTTPLoads Stellen Sie YES , um HTTP für die ausgewählte Domäne zuzulassen.
NSExceptionRequiresForwardSecrecy Voreinstellung auf YES ; Wählen Sie NO , um die Forward Secrecy zu deaktivieren und weitere Verschlüsselungen zu akzeptieren.
NSExceptionMinimumTLSVersion TLSv1.2 ; Mögliche Werte sind: TLSv1.0 , TLSv1.1 , TLSv1.2
NSThirdPartyExceptionAllowsInsecureHTTPLoads Ähnlich wie NSExceptionAllowsInsecureHTTPLoads , jedoch für Domänen, auf die Sie keinen Einfluss haben
NSThirdPartyExceptionRequiresForwardSecrecy Ähnlich wie NSExceptionRequiresForwardSecrecy , aber für Domänen, auf die Sie keinen Einfluss haben
NSThirdPartyExceptionMinimumTLSVersion Ähnlich wie NSExceptionMinimumTLSVersion , aber für Domänen, auf die Sie keinen Einfluss haben

Bemerkungen

Die App Transport Security ist eine Sicherheitsfunktion in iOS und macOS. Es verhindert, dass Apps ungesicherte Verbindungen aufbauen. Standardmäßig können Apps nur sichere HTTPS-Verbindungen verwenden.

Wenn eine App über HTTP eine Verbindung zu einem Server herstellen muss, müssen Ausnahmen in der Info.plist definiert werden. (Weitere Informationen dazu finden Sie in den Beispielen.)

Hinweis: Im Jahr 2017 wird Apple ATS durchsetzen. Das bedeutet, dass Sie keine Apps mehr hochladen können, für die in der Info.plist ATS-Ausnahmen definiert Info.plist . Wenn Sie gute Argumente angeben können, warum Sie HTTP verwenden müssen, können Sie sich an Apple wenden. In diesem Fall können Sie Ausnahmen definieren. (Quelle: WWDC 2016 - Sitzung 706 )

Weitere Informationen zur App Transport Security-Konfiguration finden Sie in der CocoaKeys-Dokumentation .

Laden Sie den gesamten HTTP-Inhalt

Apple hat ATS mit iOS 9 als neue Sicherheitsfunktion eingeführt, um die Privatsphäre und Sicherheit zwischen Apps und Webdiensten zu verbessern. ATS schlägt standardmäßig alle Nicht-HTTPS-Anforderungen fehl. Dies kann zwar für Produktionsumgebungen sehr schön sein, kann aber beim Testen lästig sein.

ATS wird in der Info.plist Datei des NSAppTransportSecurity mit dem NSAppTransportSecurity Wörterbuch ( App Transport Security Settings im Xcode Info.plist-Editor) konfiguriert. Um den gesamten HTTP-Inhalt zuzulassen, fügen Allow Arbitrary Loads Boolean Allow Arbitrary Loads ( NSAllowsArbitraryLoads ) hinzu und setzen Sie ihn auf YES . Dies wird nicht für Produktionsanwendungen empfohlen. Wenn HTTP-Inhalt erforderlich ist, wird empfohlen, ihn stattdessen selektiv zu aktivieren.

HTTP-Inhalt selektiv laden

Ähnlich wie das Aktivieren des gesamten HTTP-Inhalts erfolgt die gesamte Konfiguration unter den App Transport Security Settings . Fügen Sie das Wörterbuch Exception Domains ( NSExceptionDomains ) zu den ATS-Einstellungen der obersten Ebene hinzu.

Fügen Sie für jede Domäne ein Wörterbuchelement zu den Ausnahmedomänen hinzu, wobei der Schlüssel die betreffende Domäne ist. Setzen Sie NSExceptionAllowsInsecureHTTPLoads auf YES , um die HTTPS-Anforderung für diese Domäne zu deaktivieren.

Endpunkte erfordern SSL

In iOS 9 eingeführt, müssen alle Endpunkte der HTTPS-Spezifikation entsprechen.
Alle Endpunkte, die kein SSL verwenden, schlagen mit einer Warnung im Konsolenprotokoll fehl. Ihrer Bewerbung scheint es, dass die Internetverbindung fehlgeschlagen ist.

So konfigurieren Sie Ausnahmen: Fügen Sie Folgendes in Ihre Info.plist-Datei ein:

  1. Erlauben Sie bestimmte Domäne (testdomain.com) nur:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
    <key>testdomain.com</key>
    <dict>
        <key>NSIncludesSubdomains</key>
        <true/>
        <key>NSExceptionAllowsInsecureHTTPLoads</key>
        <true/>
    </dict>
</dict>

Der Schlüssel, der ein solches Verhalten zulässt, ist NSExceptionAllowsInsecureHTTPLoads . In diesem Fall lässt die App nur eine HTTP-Verbindung zur angegebenen Domäne (testdomain.com) zu und blockiert alle anderen HTTP-Verbindungen.

Der Schlüssel NSIncludesSubdomains gibt an, dass auch alle Unterdomänen der angegebenen Domäne (testdomain.com) zulässig sein sollen.

  1. Erlaube eine Domain:
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

In diesem Fall lässt die App eine HTTP-Verbindung zu einer beliebigen Domäne zu. Ab dem 1. Januar 2017 führt die Verwendung dieses Flags zu einer gründlichen Überprüfung des App Store. Die App-Entwickler müssen daher erklären, warum sie diese Ausnahme überhaupt verwenden müssen. Mögliche Erklärungen sind:

  • Eine Anwendung, die verschlüsselten Medieninhalt lädt, der keine personalisierten Informationen enthält.
  • Verbindungen zu Geräten, die nicht aktualisiert werden können, um sichere Verbindungen zu verwenden.
  • Verbindung zu einem Server, der von einer anderen Entität verwaltet wird und keine sicheren Verbindungen unterstützt.


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow