iOS
App Transport Security (ATS)
Recherche…
Paramètres
Paramètre | Détails |
---|---|
NSAppTransportSecurity | Configurer ATS |
NSAllowsArbitraryLoads | Réglez sur YES pour désactiver l'ATS partout. Dans iOS 10 et versions ultérieures, et macOS 10.12 et versions ultérieures, la valeur de cette clé est ignorée si l'une des clés suivantes est présente dans le fichier Info.plist de votre application: NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking |
NSAllowsArbitraryLoadsInMedia | Définissez la valeur sur YES pour désactiver l'ATS pour les médias chargés à l'aide des API du framework AV Foundation. (iOS 10+, MacOS 10.12+) |
NSAllowsArbitraryLoadsInWebContent | Définissez YES pour désactiver l'ATS dans les vues Web de votre application ( WKWebView , UIWebView , WebView ) sans affecter vos connexions NSURLSession. (iOS 10+, macOS 10.12+) |
NSAllowsLocalNetworking | Définissez sur YES pour désactiver les connexions aux domaines non qualifiés et aux domaines .local. (iOS 10+, macOS 10.12+) |
NSExceptionDomains | Configurer des exceptions pour des domaines spécifiques |
NSIncludesSubdomains | Définissez la valeur sur YES pour appliquer les exceptions à tous les sous-domaines du domaine sélectionné. |
NSRequiresCertificateTransparency | Définissez la valeur sur YES pour exiger que les horodatages de transparence de certificat (CT) valides et signés, provenant de journaux CT connus, soient présentés pour les certificats de serveur (X.509) sur un domaine. (iOS 10+, macOS 10.12+) |
NSExceptionAllowsInsecureHTTPLoads | Définissez sur YES pour autoriser HTTP sur le domaine sélectionné. |
NSExceptionRequiresForwardSecrecy | La valeur par défaut est YES . Réglez sur NO pour désactiver le secret de transfert et acceptez plus de chiffrements. |
NSExceptionMinimumTLSVersion | La valeur par défaut est TLSv1.2 ; Les valeurs possibles sont: TLSv1.0 , TLSv1.1 , TLSv1.2 |
NSThirdPartyExceptionAllowsInsecureHTTPLoads | Similaire à NSExceptionAllowsInsecureHTTPLoads , mais pour les domaines sur lesquels vous n'avez aucun contrôle |
NSThirdPartyExceptionRequiresForwardSecrecy | Similaire à NSExceptionRequiresForwardSecrecy , mais pour les domaines sur lesquels vous n'avez aucun contrôle |
NSThirdPartyExceptionMinimumTLSVersion | Similaire à NSExceptionMinimumTLSVersion , mais pour les domaines sur lesquels vous n'avez aucun contrôle |
Remarques
La sécurité du transport des applications est une fonction de sécurité dans iOS et macOS. Il empêche les applications d'établir des connexions non sécurisées. Par défaut, les applications ne peuvent utiliser que des connexions HTTPS sécurisées.
Si une application doit se connecter à un serveur via HTTP, des exceptions doivent être définies dans Info.plist
. (voir les exemples pour plus d'informations à ce sujet)
Remarque: en 2017, Apple appliquera l'ATS. Cela signifie que vous ne pouvez plus télécharger des applications qui ont des exceptions ATS définies dans Info.plist
. Si vous pouvez fournir de bons arguments, expliquez pourquoi vous devez utiliser HTTP, vous pouvez contacter Apple et ils peuvent vous permettre de définir des exceptions. (Source: WWDC 2016 - Session 706 )
Vous trouverez plus d'informations sur la configuration de la sécurité du transport App dans la documentation de CocoaKeys .
Charger tout le contenu HTTP
Apple a introduit ATS avec iOS 9 comme nouvelle fonction de sécurité pour améliorer la confidentialité et la sécurité entre les applications et les services Web. ATS par défaut échoue toutes les requêtes non HTTPS. Bien que cela puisse être vraiment intéressant pour les environnements de production, cela peut être gênant lors des tests.
ATS est configuré dans le fichier Info.plist
la cible avec le dictionnaire NSAppTransportSecurity
( App Transport Security Settings
dans l'éditeur Xcode Info.plist). Pour autoriser tout le contenu HTTP, ajoutez le booléen Allow Arbitrary Loads
( NSAllowsArbitraryLoads
) et réglez-le sur YES
. Ceci n'est pas recommandé pour les applications de production et si un contenu HTTP est requis, il est recommandé de l'activer de manière sélective.
Charger de manière sélective le contenu HTTP
Semblable à l'activation de tout le contenu HTTP, toute la configuration se produit sous les App Transport Security Settings
. Ajoutez le dictionnaire des Exception Domains
( NSExceptionDomains
) aux paramètres ATS de niveau supérieur.
Pour chaque domaine, ajoutez un élément de dictionnaire aux domaines d'exception, où la clé correspond au domaine en question. Définissez NSExceptionAllowsInsecureHTTPLoads
sur YES
pour désactiver la configuration HTTPS requise pour ce domaine.
Les points d'extrémité nécessitent SSL
Introduit dans iOS 9, tous les points de terminaison doivent respecter la spécification HTTPS.
Tout ordinateur d'extrémité n'utilisant pas SSL échouera avec un avertissement dans le journal de la console. Pour votre application, il apparaîtra que la connexion Internet a échoué.
Pour configurer des exceptions: Placez les éléments suivants dans votre fichier Info.plist:
- Autoriser un domaine particulier (testdomain.com) uniquement :
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
La clé qui autorise un tel comportement est NSExceptionAllowsInsecureHTTPLoads
. Dans ce cas, l'application autorisera la connexion HTTP au domaine mentionné (testdomain.com) uniquement et bloquera toutes les autres connexions HTTP.
La clé NSIncludesSubdomains
spécifie que tous les sous - domaines du domaine mentionné (testdomain.com) doivent également être autorisés.
- Autoriser n'importe quel domaine:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Dans ce cas, l'application autorisera la connexion HTTP à n'importe quel domaine. À compter du 1er janvier 2017, l'utilisation de cet indicateur entraînera une révision approfondie de l'App Store et les développeurs de l'application devront expliquer pourquoi ils doivent utiliser cette exception en premier lieu. Les explications possibles comprennent:
- Une application qui charge un contenu multimédia crypté ne contenant aucune information personnalisée.
- Connexions aux périphériques ne pouvant pas être mis à niveau pour utiliser des connexions sécurisées.
- Connexion à un serveur géré par une autre entité et ne prenant pas en charge les connexions sécurisées.