web-dev-qa-db-de.com

iOS9 ATS: Wie sieht es mit HTML5-basierten Apps aus?

Laut der Dokumentation aus https://developer.Apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//Apple_ref/doc/uid/TP40016198-SW14 , zwingt Apple dazu Verwenden Sie HTTPS über HTTP in iOS 9.

App-Transportsicherheit

Mit App Transport Security (ATS) kann eine App ihrer Info.plist-Datei eine Deklaration hinzufügen, die die Domänen angibt, mit denen eine sichere Kommunikation erforderlich ist. ATS verhindert versehentliche Offenlegung, bietet sicheres Standardverhalten und ist einfach zu übernehmen. Sie sollten ATS so bald wie möglich übernehmen, unabhängig davon, ob Sie eine neue App erstellen oder eine vorhandene aktualisieren.

Wenn Sie eine neue App entwickeln, sollten Sie ausschließlich HTTPS verwenden. Wenn Sie über eine vorhandene App verfügen, sollten Sie HTTPS so oft wie möglich verwenden und einen Plan erstellen, um die restliche App so schnell wie möglich zu migrieren.

Was bedeutet das für Webanwendungen, insb. Sencha Touch und Cordova/PhoneGap basierte? Meine Web-App kann als any -Serveradresse konfiguriert werden. Daher kann ich sie nicht in einer Plist-Datei in die Whitelist aufnehmen. Gilt dies nur für Anwendungen, die native Anfragen verwenden (über NSURLRequest usw.)?

28
Dennis

Wenn Sie nicht sicher sind, über welche URL Ihre Anwendung eine Verbindung herstellen soll, oder wenn Sie eine Verbindung zu vielen URLs herstellen, können Sie den ATS (App Transport Security) umgehen, indem Sie die folgenden Schlüssel in die Datei info.plist hinzufügen.

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

Versuchen Sie folgendes: cordova plugin add https://github.com/robertklein/cordova-ios-security.git

Während des Erstellungsprozesses wird der *-Info.plist-Datei der folgende Teil hinzugefügt:

<key>NSAppTransportSecurity</key> 
<dict>
  <key>NSAllowsArbitraryLoads</key> <true/> 
</dict>
17
robert.little

So behandeln Sie SSL in iOS9 , Eine Lösung ist wie folgt zu tun:

Wie der Apple sagen: enter image description hereenter image description here

enter image description here

für iOS 9 und OSX 10.11 ist TLSv1.2-SSL für alle Hosts erforderlich, von denen Sie Daten anfordern möchten, sofern Sie keine Ausnahmedomänen in der Info.plist-Datei Ihrer App angeben.

Die Syntax für die Info.plist-Konfiguration sieht folgendermaßen aus:

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

Wenn Ihre Anwendung (z. B. ein Webbrowser eines Drittanbieters) eine Verbindung zu beliebigen Hosts herstellen muss, können Sie sie folgendermaßen konfigurieren:

<key>NSAppTransportSecurity</key>
<dict>
    <!--Connect to anything (this is probably BAD)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Wenn Sie dies tun müssen, sollten Sie Ihre Server wahrscheinlich so aktualisieren, dass sie TLSv1.2 und SSL verwenden, sofern dies nicht bereits der Fall ist. Dies sollte als temporäre Problemumgehung betrachtet werden.

In der Prerelease-Dokumentation ist bis heute keine der Konfigurationsoptionen erwähnt. Sobald dies der Fall ist, werde ich die Antwort aktualisieren, um auf die entsprechende Dokumentation zu verweisen.

Hier ist eine Demo (Demo1)

7
ElonChan

Apple erzwingt eigentlich nichts, sie haben lediglich ein Framework, das als Standard festgelegt ist, und erhöhen so die Sicherheit zum Nutzen der App und der Benutzer ihrer Dienste. Dies bedeutet, dass, bis die Hybridwerkzeuge die Details in vorhandene Produkte integrieren, Anpassungen an den entsprechenden Konfigurationsdateien mit etwas Verständnis der Details vorgenommen werden müssen (siehe verknüpfte Antwort + Kommentar darunter) . Nachdem ich mich genau mit diesem Problem beschäftigt habe, empfehle ich zunächst, lokal zu entwickeln, beliebige Lasten zuzulassen und ATS zu umgehen. Wenn ATS für die Genehmigung des App Store erforderlich ist, aktivieren Sie ATS (und das willkürliche Laden explizit), wenn Sie mit einer größeren Gruppe von Benutzern testen möchten. Passen Sie dann die Ausnahmen nach Bedarf auf die Standardeinstellungen an. Die Hauptfrage für jede Domäne lautet, ob Subdomains zugelassen werden sollen, TLS-Versionen nach Bedarf angepasst werden und ob auch insecure http zulässig ist. Meine App hat etwa 20 Domains, um andere Anfragen an andere Apps weiterzuleiten. Wenn es sich um einen Webbrowser handelt, hätte ich bestimmte Einstellungen für meine Dienste (die ich kontrolliere und kenne) und den Rest willkürlich zulassen.

0
jimmont