web-dev-qa-db-fra.com

Comment puis-je ajouter NSAppTransportSecurity à mon fichier info.plist?

https://developer.Apple.com/videos/wwdc/2015/?id=711 @ 5: 55

Je n'arrive pas à ajouter ceci à mon info.plist. Il n'y a aucune valeur cela. J'utilise XCode version 7.0 beta (7A121l) et je teste sur iOS9.

Comme je ne peux pas déclarer spécifiquement les URL que je veux voir dans la vidéo, je continue à recevoir "App Transport Security a bloqué une charge de ressources HTTP en texte clair (http: //), car celle-ci n'est pas sécurisée. Des exceptions temporaires peuvent être configurées via les applications de votre application. Fichier Info.plist ".

Cependant, je ne semble pas pouvoir le configurer. Des idées?

119
chris P

try With this --- a fonctionné pour moi dans Xcode-beta 4 7.0

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

Aussi, une autre option, si vous voulez désactiver ATS, vous pouvez utiliser ceci:

<key>NSAppTransportSecurity</key>  
 <dict>  
      <key>NSAllowsArbitraryLoads</key><true/>  
 </dict>

Mais ce n'est pas recommandé du tout. Le serveur doit avoir les certificats SSL et éviter les fuites de confidentialité.

120
Ashish

Vous devez ajouter uniquement la clé NSAllowsArbitraryLoads à YES dans le dictionnaire NSAppTransportSecurity dans votre fichier info.plist.

Par exemple,

 <key>NSAppTransportSecurity</key>
 <dict>
      <key>NSAllowsArbitraryLoads</key>
     <true/>
 </dict>

enter image description here

88
Hiren Varu

Cela ne fonctionnait pas pour moi, mais cela a fait le tour:

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><true/>  
     </dict>  
45
Bobby

Juste pour clarifier ... Vous devriez toujours utiliser httpS

Mais vous pouvez le contourner en ajoutant l'exception:

enter image description here

21
Manuel Pardo

Xcode 8.2, iOS 10

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
9
Oleg Malovichko

Réponse mise à jour (après wwdc 2016):

IOS apps will require secure HTTPS connections by the end of 2016

App Transport Security, ou ATS, est une fonctionnalité que Apple a introduite dans iOS 9. Lorsque ATS est activé, il oblige une application à se connecter aux services Web via une connexion HTTPS plutôt que HTTP non sécurisé.

Toutefois, les développeurs peuvent toujours désactiver ATS et autoriser leurs applications à envoyer des données via une connexion HTTP, comme indiqué dans les réponses ci-dessus. Fin 2016, Apple rendra ATS obligatoire pour tous les développeurs qui souhaitent soumettre leurs applications sur l'App Store. lien

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>uservoice.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>
2
Santhosh Legent
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>com</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>net</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>org</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

Cela permettra de se connecter à .com .net .org

2
Subirdcom

En ligne de commande du shell shell, utilisez la commande suivante:

plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist 

La commande ajoutera toutes les valeurs nécessaires dans votre fichier plist.

1
Avi Levin

XCODE 8, Swift 3: Vous devez ajouter une ligne: **

"Paramètre de sécurité du transport d'application"

** dans la liste des propriétés de l'information interne info.plist.

1
Robert Juamarcal

Pour expliquer un peu plus la réponse de ParaSara: La sécurité d'App Transport deviendra deviendra obligatoire et si vous essayez de la désactiver, votre application risque d'être rejetée.

En tant que développeur, vous pouvez désactiver la sécurité d'App Transport si votre code de réseau ne fonctionne pas avec elle et si vous souhaitez poursuivre le développement avant de résoudre tout problème. Disons que dans une équipe de cinq, quatre peuvent continuer à travailler sur d’autres tâches pendant que l’une règle tous les problèmes. Vous pouvez également désactiver la sécurité d'App Transport en tant qu'outil de débogage si vous rencontrez des problèmes de réseau et que vous souhaitez vérifier s'ils sont causés par la sécurité d'App Transport. Dès que vous savez que vous devriez le rallumer immédiatement.

La solution que vous devez utiliser à l'avenir est de ne pas utiliser du tout le protocole http, sauf si vous utilisez un serveur tiers qui ne prend pas en charge le protocole https. Si votre propre serveur ne prend pas en charge https, Apple aura un problème avec cela. Même avec des serveurs tiers, je ne parierais pas que Apple l'accepte.

Même chose pour les différentes vérifications de la sécurité du serveur. À un moment donné, Apple n'acceptera que des exceptions justifiables.

Mais surtout, considérez ceci: vous mettez en danger la vie privée de vos clients. C'est un grand non-non dans mon livre. Ne fais pas ça. Corrigez votre code, ne demandez pas la permission d'exécuter du code non sécurisé.

1
gnasher729

Xcode 9.2, Swift 4, cela fonctionne pour moi.

<key>App Transport Security Settings</key>
<dict>
    <key>Allow Arbitrary Loads</key>
    <true/>
</dict>
1
hungmi

Une mauvaise nouvelle pour les développeurs utilisant NSAppTransportSecurity.

UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]

https://techcrunch.com/2016/06/14/Apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

1
Kahng