web-dev-qa-db-fra.com

Est-il sûr d'ajouter localhost à NSExceptionDomains App Transport Security (ATS)?

Est-il sûr, en termes de sécurité, d'ajouter localhost à ATS NSExceptionDomains pour le développement? Il n'est pas très pratique (et il est facile d'oublier) de supprimer ces lignes de Info.plist fichier avant chaque commit.

<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

De plus, peut Apple rejeter l'application à cause de cela?

23
KlimczakM

Vous pouvez maintenant le faire pour les adresses locales:

<key>NSAppTransportSecurity</key>    
<dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

Apple a béni cette clé en tant qu'exception ATS - il a déclaré qu'il ne rejetterait pas les applications pour son utilisation. Plus d'informations ici: https://developer.Apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html (rechercher dans la page "local")

76
Joseph

Si ce n'est pas nécessaire dans la version de production de l'application, je configurerais vos configurations de build pour utiliser deux fichiers Info.plist différents. Vous pouvez essentiellement avoir votre version interne du plist configurée comme "Internal-Info.plist" et avoir l'exclusion localehost en elle. Ensuite, ayez la production "Info.plist" qui n'a pas cette exclusion, ne donnant Apple aucune raison de rejeter éventuellement votre application maintenant ou à l'avenir.

Pour configurer vos builds afin d'extraire automatiquement le bon Info.plist pour le type de build:

  1. Sélectionnez votre projet dans le navigateur de gauche
  2. Sélectionnez la cible que vous souhaitez modifier (sous "OBJECTIFS")
  3. Cliquez sur "Paramètres de construction"
  4. Rechercher "Info.plist"
  5. Dans la section Empaquetage, vous devriez voir un paramètre appelé "Fichier Info.plist". Sélectionnez la ligne, puis cliquez sur le petit triangle pour l'agrandir afin que vous puissiez avoir différents paramètres pour différentes configurations de construction. Modifiez la valeur de "Debug" en "Internal-Info.plist"

Assurez-vous de copier le "Info.plist" dans un nouveau fichier appelé "Internal-Info.plist", supprimez l'exclusion du "Info.plist" et vous devriez être bon.

Apple pourrait vous rejeter maintenant pour cela (seulement Apple le saurait), mais à partir de 2017, Apple aura besoin d'une raison valable pour toute exclusion ATS, donc sauf si vous avez une justification valable pour exclure les exigences ATS localhost, il est préférable de le configurer correctement maintenant.

3
wottle