1

Dans les jours précédents, chaque fois que je veux récupérer des données il n'y avait pas besoin d'ajouter NSAppTransportSecurity définir la clé NSAllowsArbitraryLoads à YES dans info.plist, mais maintenant si vous allez exécuter votre application sur le réseau, alors il doit être ajouté.Pourquoi faut-il ajouter `NSAppTransportSecurity` et ajouter la clé` NSAllowsArbitraryLoads` à `YES`?

Pourquoi cela est-il nécessaire? Comment c'est utile? Quel est l'usage de celui-ci?

Quelqu'un peut-il aider, s'il vous plaît?

Répondre

6

App Transport Security a été introduit avec iOS9 en tant que fonctionnalité de sécurité supplémentaire lors de la connexion de votre application au Web.

De la documentation d'Apple:

App Transport Security est une fonctionnalité qui améliore la sécurité des connexions entre une application et les services Web. La fonctionnalité se compose des exigences de connexion par défaut conformes aux meilleures pratiques pour les connexions sécurisées . Les applications peuvent remplacer ce comportement par défaut et désactiver sur la sécurité du transport.

L'une des conditions est que toutes les connexions doivent utiliser HTTPS . C'est pourquoi toutes les connexions qui utilisent uniquement HTTP échoueront sur iOS9.

Si vous utilisez un service qui n'est pas disponible via HTTPS, vous pouvez toujours l'utiliser en remplaçant la sécurité de transport de l'application. Voilà à quoi sert le dictionnaire NSAppTransportSecurity dans votre fichier Info.plist. Là, vous pouvez définir quelle exigence de sécurité du transport App vous souhaitez remplacer.

Par exemple, NSAllowsArbitraryLoads désactive tous les exigences de sécurité pour tous les domaines. Vous pouvez définir des exceptions dans le dictionnaire NSExceptionDomains, mais si vous ne le faites pas, tous les domaines seront autorisés à se connecter à votre application sans App Transport Security.

Lorsque vous voulez vous connecter à un seul domaine qui n'utilise pas HTTPS, vous ne devez pas utiliser NSAllowsArbitraryLoads parce que tousdésactive la sécurité pour tous les domaines . Au lieu de cela, vous devez remplacer spécifiquement l'exigence HTTPS pour ce seul domaine.

Vous pouvez le faire comme ceci dans votre fichier Info.plist:

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>yourdomain.com</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

Pour résumer les choses: App Transport La sécurité est une bonne chose, car il vous encourage à utiliser des connexions HTTPS qui sont plus sûrs que HTTP ordinaire les liaisons. Parce que vous ne pouvez pas toujours utiliser HTTPS, il vous offre la possibilité d'autoriser des connexions non sécurisées. Il est recommandé d'utiliser ces remplacements de sécurité uniquement là où vous en avez besoin.

+0

Merci ... @joern – VRAwesome