Welche Einstellung muss ich vornehmen, um info.plist
den HTTP-Modus gemäß der folgenden Fehlermeldung zu aktivieren?
Die Transportsicherheit hat eine Klartext-HTTP-Ressourcenlast (http: //) blockiert, da sie unsicher ist. Temporäre Ausnahmen können über die Info.plist-Datei Ihrer App konfiguriert werden.
Angenommen, meine Domain ist example.com
.
Allow arbitary loads
). Bald wird dies nicht mehr möglich sein, da Apple ATS benötigt (ursprünglich das Ende des Jahres - Frist wurde verlängert) - developer.apple.com/news/?id=12212016bAntworten:
Wenn Sie Xcode 8.0+ und Swift 2.2+ oder sogar Ziel C verwenden:
quelle
NSAllowsArbitraryLoads
eingestellt auftrue
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Verwenden Sie NSAppTransportSecurity:
Sie haben die festlegen NSAllowsArbitraryLoads Schlüssel zum YES unter NSAppTransportSecurity Wörterbuch in Ihrer info.plist Datei.
quelle
Hier sind die Einstellungen visuell:
quelle
Siehe den Forumsbeitrag Application Transport Security? .
Auch die Seite Konfigurieren von Sicherheitsausnahmen für den App-Transport in iOS 9 und OSX 10.11 .
Sie können beispielsweise eine bestimmte Domain hinzufügen, z.
Die faule Option ist:
Hinweis:
info.plist
ist eine XML-Datei, sodass Sie diesen Code mehr oder weniger an einer beliebigen Stelle in der Datei platzieren können.quelle
Dies wurde getestet und funktionierte mit iOS 9 GM Seed. Dies ist die Konfiguration, mit der eine bestimmte Domäne HTTP anstelle von HTTPS verwenden kann:
NSAllowsArbitraryLoads
muss seinfalse
, da es alle unsicheren Verbindungen verbietet , aber die Ausnahmeliste die Verbindung zu einigen Domänen ohne HTTPS ermöglicht.quelle
Dies ist eine schnelle Problemumgehung (aber nicht empfohlen), um dies in die Liste aufzunehmen:
Was bedeutet (laut Apple-Dokumentation ):
Ich empfehle wirklich Links:
die mir helfen, die Gründe und alle Auswirkungen zu verstehen.
Das folgende XML (in der Datei Info.plist) wird:
beliebige Aufrufe für alle Seiten
PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE
nicht zulassen , aber für Verbindungen wird das HTTP-Protokoll verwendet.Zum obigen XML können Sie hinzufügen:
Wenn Sie unsichere Verbindungen für die Subdomains der angegebenen Adresse zulassen möchten.
Der beste Ansatz besteht darin, alle beliebigen Ladevorgänge zu blockieren (auf false gesetzt) und Ausnahmen hinzuzufügen, um nur Adressen zuzulassen, von denen wir wissen, dass sie in Ordnung sind.
Für interessierte Leser
Update 2018:
Apple empfiehlt, dies nicht auszuschalten. Weitere Informationen finden Sie in der WWDC 2018-Sitzung 207 , in der weitere Informationen zur Sicherheit erläutert werden
Die ursprüngliche Antwort aus historischen Gründen und Entwicklungsphase verlassen
quelle
NSAllowsArbitraryLoads
muss seinfalse
<key>NSIncludesSubdomains</key> <true/>
? Muss jede Umgebung von umgeben sein<dict>
? Wie bearbeitest du diese verdammte Plist-Datei? Wie ist die Formatierung? : D Danke.Für diejenigen unter Ihnen, die mehr darüber erfahren möchten, warum dies geschieht, und darüber, wie es behoben werden kann, lesen Sie weiter unten.
Mit der Einführung von iOS 9 müssen sichere Verbindungen zwischen einer App und ihrem Webdienst den Best Practices entsprechen , um die Sicherheit der Verbindungen zwischen einer App und Webdiensten zu verbessern . Das Best-Practice-Verhalten wird von der App Transport Security erzwungen, um :
Wie im App Transport Security Technote erläutert, gelten für die Kommunikation mit Ihrem Webdienst für App Transport Security jetzt die folgenden Anforderungen und Verhaltensweisen:
Mit anderen Worten, Ihre Webdienstanforderung sollte: a.) HTTPS verwenden und b.) Mit TLS v1.2 mit Vorwärtsgeheimnis verschlüsselt werden.
Wie bereits in anderen Beiträgen erwähnt, können Sie dieses neue Verhalten von App Transport Security überschreiben, indem Sie die unsichere Domäne in
Info.plist
Ihrer App angeben.Zum Überschreiben müssen Sie die
NSAppTransportSecurity
>NSExceptionDomains
Wörterbuch-Eigenschaften zu Ihrem hinzufügenInfo.plist
. Als Nächstes fügen Sie die Domain Ihres Webdienstes zumNSExceptionDomains
Wörterbuch hinzu.Wenn ich beispielsweise das Verhalten von App Transport Security für einen Webdienst auf dem Host www.yourwebservicehost.com umgehen möchte, würde ich Folgendes tun:
Öffnen Sie Ihre App in Xcode.
Suchen Sie die
Info.plist
Datei im Projektnavigator und klicken Sie mit der rechten Maustaste darauf und wählen Sie die Menüoption Öffnen als > Quellcode . Die Eigenschaftslistendatei wird im rechten Bereich angezeigt.Fügen Sie den folgenden Eigenschaftenblock in das Haupteigenschaftenwörterbuch ein (unter den ersten
<dict>
).Wenn Sie Ausnahmen für zusätzliche Domänen angeben müssen, fügen Sie darunter eine weitere Wörterbucheigenschaft hinzu
NSExceptionDomains
.Um mehr über die oben genannten Schlüssel zu erfahren, lesen Sie diesen bereits erwähnten Technote .
quelle
./platforms/ios/<project>/<project>-Info.plist
mitNSAllowsArbitraryLoads=false
und vielen Ausnahmedomänen für Dienste mit unterschiedlichen TLS / HTTP / HTTPS-Kombinationen. Zunächst verwendet,NSAllowsArbitraryLoads=true
dann angepasst, Fehlerbehebung bei den Regeln durch Ausprobieren, um den Richtlinien zu entsprechen und zur Genehmigung einzureichen. Hinweisanweisungenconfig.xml
<access origin=.../>
füllen diese Datei teilweise aus, müssen jedoch derzeit durch direkte Bearbeitung oder über XCode angepasst werden, damit die Details korrekt sind.<access origin="*"/>
(in config.xml) setztNSAllowsArbitraryLoads=true
(für Cordova / Phonegap / Hybrid-AppsNSExceptionAllowsInsecureHTTPLoads
eingestellt auftrue
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Ich mag es nicht, die Plist direkt zu bearbeiten. Sie können es einfach über die GUI zur Liste hinzufügen:
Ändern Sie nun die Daten im Hauptbereich:
Add Row
quelle
NSAllowsArbitraryLoads
eingestellt aufYES
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Hierfür gibt es zwei Lösungen:
Lösungen 1:
Info.plist
Fügen Sie in der Datei ein Wörterbuch mit dem Schlüssel 'NSAppTransportSecurity
' hinzu'Allow Arbitrary Loads'
Plist
Die Struktur sollte wie im folgenden Bild gezeigt aussehen.Lösung 2:
Info.plist
Fügen Sie in der Datei ein Wörterbuch mit dem Schlüssel 'NSAppTransportSecurity
' hinzuNSExceptionDomains
' hinzu'MyDomainName.com'
vom Typ NSDictionary hinzufügenNSIncludesSubdomains
' des TypsBoolean
und des Werts hinzu, der als festgelegt istYES
NSTemporaryExceptionAllowsInsecureHTTPLoads
' des TypsBoolean
und des Werts hinzu, der als festgelegt istYES
Plist
Die Struktur sollte wie im folgenden Bild gezeigt aussehen.Lösung 2 wird bevorzugt, da nur ausgewählte Domänen zugelassen werden, während Lösung 1 alle unsicheren HTTP-Verbindungen zulässt.
quelle
NSAllowsArbitraryLoads
eingestellt aufYES
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Die Transportsicherheit ist unter iOS 9.0 oder höher verfügbar. Möglicherweise wird diese Warnung angezeigt, wenn Sie versuchen, einen WS in Ihrer Anwendung aufzurufen:
Wenn Sie Folgendes zu Ihrer Info.plist hinzufügen, wird ATS deaktiviert:
quelle
Entwicklungsbeispiel
Hier ist ein Screenshot einer Liste, die ATS intakt hält (= sicher), aber ermöglicht, dass Verbindungen zu localhost über HTTP anstelle von HTTPS hergestellt werden können . Es funktioniert in Xcode 7.1.1.
quelle
NSExceptionAllowsInsecureHTTPLoads - YES
?Gehen Sie zu Ihrer Info.plist
quelle
NSAllowsArbitraryLoads
eingestellt auftrue
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Laut Apple führt das generelle Deaktivieren von ATS zur Ablehnung von Apps, es sei denn, Sie haben einen guten Grund dafür. Selbst dann sollten Sie Ausnahmen für Domänen hinzufügen, auf die Sie sicher zugreifen können.
Apple hat ein hervorragendes Tool, das Ihnen genau sagt, welche Einstellungen Sie verwenden sollen: Geben Sie im Terminal ein
und nscurl prüft, ob diese Anforderung fehlschlägt, probiert dann verschiedene Einstellungen aus und teilt Ihnen genau mit, welche übergeben werden und was zu tun ist. Für eine URL eines Drittanbieters, die ich besuche, hat mir dieser Befehl beispielsweise mitgeteilt, dass dieses Wörterbuch übergeben wird:
Verwenden Sie beispielsweise den Schlüssel NSThirdPartyExceptionRequiresForwardSecrecy, um zwischen Ihren eigenen Websites und Websites von Drittanbietern zu unterscheiden, auf die Sie keinen Einfluss haben.
quelle
NSExceptionAllowsInsecureHTTPLoads = true;
, aber es stellt sich heraus, dass einer nicht benötigt wird.Finden Sie heraus, welche Einstellungen verwendet werden sollen, wie in diesem Technote erwähnt :
quelle
HINWEIS: Die Ausnahmedomäne in Ihrer Liste sollte sich in LOWER-CASE befinden.
Beispiel: Sie haben Ihren Computer unter "Einstellungen-> Freigabe" "MyAwesomeMacbook" genannt. Ihr Server (zu Testzwecken) läuft auf MyAwesomeMacbook.local: 3000, und Ihre App muss eine Anfrage an http: //MyAwesomeMacbook.local: 3000 / files ... senden. In Ihrer Liste müssen Sie "myawesomemacbook" angeben. local "als Ausnahmedomäne.
- -
Ihre info.plist würde enthalten ...
quelle
Verwenden:
Fügen Sie ein neues Element, NSAppTransportSecurity , in die plist-Datei mit dem Typ Dictionary ein , fügen Sie dann das Unterelement NSAllowsArbitraryLoads im Wörterbuch vom Typ Boolean hinzu und setzen Sie den Bool-Wert YES . Das funktioniert bei mir.
quelle
Am 25.09.2015 (nach Xcode-Updates am 18.09.2015):
Ich habe eine nicht faule Methode verwendet, aber sie hat nicht funktioniert. Das Folgende sind meine Versuche.
Zuerst,
Und zweitens,
Schließlich habe ich die faule Methode angewendet:
Es mag etwas unsicher sein, aber ich konnte keine anderen Lösungen finden.
quelle
NSAllowsArbitraryLoads
eingestellt auftrue
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.In Swift 4 und Xocde 10 ändern Sie die NSAllowsArbitraryLoads in Allow Arbitrary Loads. also wird es so aussehen:
quelle
Es kann erwähnenswert sein, wie man dorthin kommt ...
Info.plist ist eine der Dateien unter dem Main.storyboard oder viewController.swift.
Wenn Sie das erste Mal darauf klicken, liegt es normalerweise in einem Tabellenformat vor. Klicken Sie also mit der rechten Maustaste auf die Datei und öffnen Sie sie als Quellcode. Fügen Sie dann gegen Ende den folgenden Code hinzu:
Kopieren Sie den Code direkt oben
Das ist am Ende.
quelle
NSAllowsArbitraryLoads
eingestellt auftrue
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Update für Xcode 7.1 mit Problem 27.10.15:
Der neue Wert in der Info.plist lautet "Sicherheitseinstellungen für den App-Transport". Von dort sollte dieses Wörterbuch enthalten:
quelle
Für diejenigen, die hierher gekommen sind, um den Grund zu finden, warum ihr WKWebView immer weiß ist und nichts lädt (genau wie hier beschrieben, wie kann ich WKWebView schnell und für eine macOS-App zum Laufen bringen? ):
Wenn die gesamte oben genannte Raketenwissenschaft für Sie nicht funktioniert, überprüfen Sie das Offensichtliche: die Sandbox-Einstellungen
Ich bin neu in Swift und Kakao, aber ziemlich erfahren in der Programmierung. Ich habe ungefähr 20 Stunden damit verbracht, diese Lösung zu finden. Keines von Dutzenden Hipster-iOS-Tutorials oder Apple-Keynotes - nichts erwähnt dieses kleine Kontrollkästchen.
quelle
Standardmäßig erlaubt iOS nur die HTTPS-API. Da HTTP nicht sicher ist, müssen Sie die App-Transportsicherheit deaktivieren. Es gibt zwei Möglichkeiten, ATS zu deaktivieren:
Klicken Sie im linken Bereich im Projekt auf Projekt, wählen Sie das Projekt als Ziel aus und wählen Sie die Registerkarte Info. Sie müssen das Wörterbuch in der folgenden Struktur hinzufügen.
quelle
quelle
Bei Verwendung wird
NSExceptionDomains
möglicherweise kein Effekt gleichzeitig angewendet, da die Zielwebsite möglicherweise Ressourcen (z. B.js
Dateien) von externen Domänen überlädthttp
. Es kann auch durch Hinzufügen dieser externen Domänen behoben werdenNSExceptionDomains
.Verwenden Sie das Remote-Debugging, um zu überprüfen, welche Ressourcen nicht geladen werden können. Hier ist ein Tutorial: http://geeklearning.io/apache-cordova-and-remote-debugging-on-ios/
quelle
Wenn Sie Cordova zu Ihrer ios.json hinzufügen möchten, gehen Sie wie folgt vor:
Und es sollte innerhalb sein von:
quelle
NSAllowsArbitraryLoads
eingestellt auftrue
? Sie untergraben den Zweck von ATS. Siehe auch Der gefährlichste Code der Welt: Überprüfen von SSL-Zertifikaten in Nicht-Browser-Software . Ihre Software hat gerade die Liste erstellt.Wie viele bemerkt haben, ist dies ein Funktionsproblem, das mit iOS 9.0 geliefert wird. Sie haben ein Ding namens App Transport Security hinzugefügt, und auch ich war verärgert, als es meine Apps kaputt machte.
Sie können es mit dem NSAllowsArbitraryLoads-Schlüssel auf YES unter dem NSAppTransportSecurity-Wörterbuch in Ihrer .plist-Datei verbinden, aber letztendlich müssen Sie den Code, der Ihre URLs bildet, neu schreiben, um das Präfix HTTPS: // zu bilden.
Apple hat die NSUrlConnection-Klasse in iOS 9.0 neu geschrieben. Sie können darüber in NSURLConnection lesen .
Andernfalls müssen Sie möglicherweise von iOS 9.0 zurücktreten, bis Sie Zeit haben, die richtige Lösung zu implementieren.
quelle