iOS
App-Transportsicherheit (ATS)
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:
- 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.
- 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.