App-Transport Sicherheit in xamarin. IOSApp Transport Security in Xamarin.iOS

App-Transport Sicherheit (app Transport Security, ATS) erzwingt sichere Verbindungen zwischen Internetressourcen (z. b. dem Back-End-Server der APP) und ihrer app.App Transport Security (ATS) enforces secure connections between internet resources (such as the app's back-end server) and your app.

In diesem Artikel werden die Sicherheitsänderungen vorgestellt, die von der APP-Transport Sicherheit für eine IOS 9-APP erzwungen werden, und das bedeutet, dass für Ihre xamarin. IOS-Projektedie Optionen der ATS-Konfiguration behandelt werden, und es wird erläutert, wie Sie die ATS-Funktionen bei Bedarf ablehnen .This article will introduce the security changes that App Transport Security enforces on an iOS 9 app and what this means for your Xamarin.iOS projects, it will cover the ATS configuration options and it will cover how to opt-out of ATS ATS if required. Da ATS standardmäßig aktiviert ist, wird bei allen nicht sicheren Internetverbindungen eine Ausnahme in ios 9-apps ausgelöst (es sei denn, Sie haben Sie explizit zugelassen).Because ATS is enabled by default, any non-secure internet connections will raise an exception in iOS 9 apps (unless you've explicitly allowed it).

Informationen zur APP-Transport SicherheitAbout App Transport Security

Wie bereits erwähnt, stellt ATS sicher, dass die gesamte Internetkommunikation in ios 9 und OS X El Capitan den bewährten Methoden der sicheren Verbindung entspricht. Dadurch wird die versehentliche Offenlegung vertraulicher Informationen entweder direkt über Ihre APP oder eine von ihr verwendete Bibliothek verhindert.As stated above, ATS ensures that all internet communications in iOS 9 and OS X El Capitan conform to secure connection best practices, thereby preventing accidental disclosure of sensitive information either directly through your app or a library that it is consuming.

Implementieren Sie für vorhandene apps das HTTPS Protokoll, wann immer dies möglich ist.For existing apps, implement the HTTPS protocol whenever possible. Bei neuen xamarin. IOS-apps sollten Sie exklusiv verwenden, HTTPS Wenn Sie mit Internetressourcen kommunizieren.For new Xamarin.iOS apps, you should use HTTPS exclusively when communicating with internet resources. Darüber hinaus muss die API-Kommunikation auf hoher Ebene mit der TLS-Version 1,2 mit vorwärts Geheimnis verschlüsselt werden.Additionally, high-level API communication must be encrypted using TLS version 1.2 with forward secrecy.

Alle Verbindungen, die mit " NSURLConnection", " cfurl " oder " nsurlsession " hergestellt wurden, verwenden standardmäßig in apps, die für IOS 9 und OS X 10,11 (El Capitan) erstellt wurden.Any connection made with NSUrlConnection, CFUrl or NSUrlSession will use ATS by default in apps built for iOS 9 and OS X 10.11 (El Capitan).

Standardverhalten bei ATSDefault ATS Behavior

Da ATS in apps, die für IOS 9 und OS X 10,11 (El Capitan) erstellt werden, standardmäßig aktiviert ist, gelten für alle Verbindungen, die NSURLConnection, cfurl oder nsurlsession verwenden, Sicherheitsanforderungen.Since ATS is enabled by default in apps built for iOS 9 and OS X 10.11 (El Capitan), all connections using NSUrlConnection, CFUrl or NSUrlSession will be subject to ATS security requirements. Wenn Ihre Verbindungen diese Anforderung nicht erfüllen, schlagen Sie mit einer Ausnahme fehl.If your connections do not meet these requirement, they will fail with an exception.

Anforderungen an VerbindungsanforderungenATS Connection Requirements

ATS erzwingt die folgenden Anforderungen für alle Internetverbindungen:ATS will enforce the following requirements for all internet connections:

  • Alle Verbindungs Chiffren müssen ein vorwärts Geheimnis verwenden.All connection ciphers must be using forward secrecy. Weitere Informationen finden Sie unten in der Liste der akzeptierten Chiffren.See the list of accepted ciphers below.
  • Das TLS-Protokoll (Transport Layer Security) muss mindestens eine Version 1,2 aufweisen.The Transport Layer Security (TLS) protocol must be version 1.2 or greater.
  • Für alle Zertifikate muss mindestens ein SHA256-Fingerabdruck mit einem 2048-Bit-oder einem höheren RSA-Schlüssel oder einem 256-Bit-oder einem höheren Elliptic Curve-Schlüssel (ECC) verwendet werden.At least a SHA256 fingerprint with either a 2048 bit or greater RSA key, or a 256 bit or greater Elliptic-Curve (ECC) key must be used for all certificates.

Da ATS standardmäßig in ios 9 aktiviert ist, wird bei jedem Versuch, eine Verbindung herzustellen, die diese Anforderungen nicht erfüllt, eine Ausnahme ausgelöst.Again, since ATS is enabled by default in iOS 9, any attempt to make a connection that doesn't meet these requirements will result in an exception being thrown.

Mit ATS kompatible ChiffrenATS Compatible Ciphers

Der folgende Forward-Geheimnis Chiffre wird von der von ATS gesicherten Internetkommunikation akzeptiert:The following forward secrecy cipher type are accepted by ATS secured internet communications:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

Weitere Informationen zum Arbeiten mit IOS-Internet Kommunikations Klassen finden Sie in der Referenz zur NSURLConnection-Klassevon Apple, in der cfurl-Referenz oder in der nsurlsession-Klassenreferenz.For more information about working with iOS internet communication classes, please see Apple's NSURLConnection Class Reference, CFURL Reference or NSURLSession Class Reference.

Unterstützung von ATS in xamarin. IOSSupporting ATS in Xamarin.iOS

Da ATS in ios 9 und OS X El Capitan standardmäßig aktiviert ist, müssen Sie, wenn Ihre xamarin. IOS-APP oder eine beliebige Bibliothek oder einen beliebigen Dienst eine Verbindung mit dem Internet herstellt, eine bestimmte Aktion durchführen. andernfalls wird eine Ausnahme ausgelöst.Because ATS is enabled by default in iOS 9 and OS X El Capitan, if your Xamarin.iOS app or any library or service it is using makes connection to the internet, you'll need to take some action or your connections will result in an exception being thrown.

Für eine vorhandene App schlägt Apple vor, das HTTPS Protokoll so bald wie möglich zu unterstützen.For an existing app, Apple suggests you support the HTTPS protocol as soon as possible. Wenn Sie dies nicht tun können, weil Sie eine Verbindung mit einem Drittanbieter-Webdienst herstellen, der nicht unterstützt HTTPS , oder wenn die Unterstützung nicht praktikabel HTTPS wäre, können Sie sich gegen Sie entscheiden.If you either can't because you are connecting to a 3rd party web service that doesn't support HTTPS or if supporting HTTPS would be impractical, you can opt-out of ATS. Weitere Informationen finden Sie weiter unten im Abschnitt " Opt-out of ATS ".See the Opting-Out of ATS section below for more details.

Für eine neue xamarin. IOS-App sollten Sie exklusiv verwenden, HTTPS Wenn Sie mit Internetressourcen kommunizieren.For a new Xamarin.iOS app, you should use HTTPS exclusively when communicating with internet resources. Auch hier gibt es möglicherweise Situationen (z. b. die Verwendung eines Drittanbieter-Webdiensts), in denen dies nicht möglich ist, und Sie müssen sich gegen Sie entscheiden.Again, there might be situations (like using a 3rd party web service) where this isn't possible and you'll need to opt-out of ATS.

Darüber hinaus erzwingt ATS eine allgemeine API-Kommunikation, die mit der TLS-Version 1,2 mit vorwärts Geheimnis verschlüsselt werden soll.Additionally, ATS enforces high-level API communication to be encrypted using TLS version 1.2 with forward secrecy. Weitere Informationen finden Sie in den Abschnitten zu den in den Anforderungen zu Verbindungsanforderungen und mit ATS kompatiblen Chiffren .See the ATS Connection Requirements and ATS Compatible Ciphers sections above for more details.

Obwohl Sie ggf. nicht mit TLS (Transport Layer Security) vertraut sind, handelt es sich um den Nachfolger von SSL (Secure Socket Layer) und stellt eine Sammlung kryptografischer Protokolle bereit, um die Sicherheit von Netzwerkverbindungen zu erzwingen.While you might not be familiar with TLS (Transport Layer Security) it is the successor to SSL (Secure Socket Layer) and provides a collection of cryptographic protocols to enforce security over network connections.

Die TLS-Ebene wird vom verwendeten Webdienst gesteuert und ist daher außerhalb der APP-Kontrolle.The TLS level is controlled by the web service that you are consuming and is therefore outside of the app's control. Sowohl HttpClient als auch ModernHttpClient sollten automatisch die höchste Ebene der TLS-Verschlüsselung verwenden, die vom Server unterstützt wird.Both the HttpClient and the ModernHttpClient should automatically use the highest level of TLS encryption supported by the server.

Abhängig von dem Server, mit dem Sie kommunizieren (insbesondere wenn es sich um einen Drittanbieter Dienst handelt), müssen Sie möglicherweise das vorwärts Geheimnis deaktivieren oder eine niedrigere TLS-Ebene auswählen.Depending on the server that you are talking to (especially if it is a 3rd party service), you might need to disable forward secrecy or select a lower TLS level. Weitere Informationen finden Sie unten im Abschnitt Konfigurieren von ATS-Optionen .See the Configuring ATS Options section below for more details.

Wichtig

Die APP-Transport Sicherheit gilt nicht für xamarin-apps, die verwaltete httpclient-Implementierungenverwenden.App Transport Security does not apply to Xamarin apps using Managed HTTPClient implementations. Es gilt nur für Verbindungen mit CFNetwork- HttpClient-Implementierungen oder nsurlsession httpclient-Implementierungen .It applies to connections using CFNetwork HTTPClient implementations or NSURLSession HTTPClient implementations only.

Festlegen der httpclient-ImplementierungSetting the HTTPClient Implementation

Zum Festlegen der httpclient-Implementierung, die von einer IOS-App verwendet wird, doppelklicken Sie auf das Projekt im Projektmappen-Explorer , um die Projektoptionenzu öffnen.To set the HTTPClient Implementation used by an iOS app, double-click the Project in the Solution Explorer to open the Project Options. Navigieren Sie zu IOS Build , und wählen Sie in der Dropdown Liste HttpClient-Implementierung den gewünschten Clienttyp aus:Navigate to iOS Build and select the desired client type under the HttpClient implementation dropdown:

Festlegen der IOS-Buildoptionen

Verwalteter HandlerManaged Handler

Der verwaltete Handler ist der vollständig verwaltete httpclient-Handler, der in früheren Versionen von xamarin. IOS enthalten war und der Standard Handler ist.The Managed handler is the fully managed HttpClient handler that has been shipped with previous versions of Xamarin.iOS and is the default handler.

Vorteile:Pros:

  • Sie ist mit Microsoft .net und einer älteren Version von xamarin am meisten kompatibel.It is the most compatible with Microsoft .NET and older version of Xamarin.

Nachteile:Cons:

  • Sie ist nicht vollständig in ios integriert (z. b. auf TLS 1,0 beschränkt).It is not fully integrated with iOS (e.g it is limited to TLS 1.0).
  • Es ist in der Regel viel langsamer als die nativen APIs.It is usually much slower than the native APIs.
  • Hierfür ist mehr verwalteter Code erforderlich, und es werden größere Apps erstellt.It requires more managed code and creates larger apps.

CFNetwork-HandlerCFNetwork Handler

Der CFNetwork-basierte Handler basiert auf dem systemeigenen CFNetwork Framework.The CFNetwork based handler is based on the native CFNetwork framework.

Vorteile:Pros:

  • Verwendet Native API, um eine bessere Leistung und kleinere ausführbare Größen zu erzielen.Uses native API for better performance and smaller executable sizes.
  • Bietet Unterstützung für neuere Standards, z. b. TLS 1,2.Adds support for newer standards such as TLS 1.2.

Nachteile:Cons:

  • Erfordert IOS 6 oder höher.Requires iOS 6 or later.
  • Nicht verfügbar für watchos.Not available of watchOS.
  • Einige Features und Optionen für httpclient sind nicht verfügbar.Some HttpClient features and options are not available.

Nsurlsession-HandlerNSUrlSession Handler

Der nsurlsession-basierte Handler basiert auf der systemeigenen NSUrlSession API.The NSUrlSession based handler is based on the native NSUrlSession API.

Vorteile:Pros:

  • Verwendet Native API, um eine bessere Leistung und kleinere ausführbare Größen zu erzielen.Uses native API for better performance and smaller executable sizes.
  • Bietet Unterstützung für neuere Standards, z. b. TLS 1,2.Adds support for newer standards such as TLS 1.2.

Nachteile:Cons:

  • Erfordert IOS 7 oder höher.Requires iOS 7 or later.
  • Einige Features und Optionen für httpclient sind nicht verfügbar.Some HttpClient features and options are not available.

Diagnostizieren von ATS-ProblemenDiagnosing ATS Issues

Wenn Sie versuchen, eine Verbindung mit dem Internet (entweder direkt oder über eine Webansicht in ios 9) herzustellen, erhalten Sie möglicherweise eine Fehlermeldung in der Form:When attempting to connect to the internet, either directly or from a web view in iOS 9, you might get an error in the form:

Die APP-Transport Sicherheit hat eine Klartext- http://www.-the-blocked-domain.com Ressourcen Last (http) blockiert, da Sie unsicher ist.App Transport Security has blocked a cleartext HTTP (http://www.-the-blocked-domain.com) resource load since it is insecure. Temporäre Ausnahmen können über die Datei "Info. plist" ihrer App konfiguriert werden.Temporary exceptions can be configured via your app's Info.plist file.

In iOS9 erzwingt App-Transport Sicherheit (app Transport Security, ATS) sichere Verbindungen zwischen Internetressourcen (z. b. dem Back-End-Server der APP) und ihrer app.In iOS9, App Transport Security (ATS) enforces secure connections between internet resources (such as the app's back-end server) and your app. Darüber hinaus erfordert die Kommunikation mit dem HTTPS Protokoll und der übergeordneten API-Kommunikation, um mit der TLS-Version 1,2 mit vorwärts Geheimnisse verschlüsselt zu werden.Additionally, ATS requires communication using the HTTPS protocol and high-level API communication to be encrypted using TLS version 1.2 with forward secrecy.

Da ATS in apps, die für IOS 9 und OS X 10,11 (El Capitan) erstellt werden, standardmäßig aktiviert ist, gelten für alle Verbindungen NSURLConnection , die verwenden, CFURL oder NSURLSession die Sicherheitsanforderungen.Since ATS is enabled by default in apps built for iOS 9 and OS X 10.11 (El Capitan), all connections using NSURLConnection, CFURL or NSURLSession will be subject to ATS security requirements. Wenn Ihre Verbindungen diese Anforderung nicht erfüllen, schlagen Sie mit einer Ausnahme fehl.If your connections do not meet these requirement, they will fail with an exception.

Apple stellt außerdem die tlstool-Beispiel-App bereit, die kompiliert (oder optional in xamarin und c# transcodiert) und zur Diagnose von ATS/TLS-Problemen verwendet werden kann.Apple also provides the TLSTool Sample App that can be compiled (or optionally transcoded to Xamarin and C#) and used to diagnose ATS/TLS issues. Informationen zum Beheben dieses Problems finden Sie unten im Abschnitt " Opt-out of ATS ".Please see the Opting-Out of ATS section below for information on how to solve this issue.

Konfigurieren von ATS-OptionenConfiguring ATS Options

Sie können mehrere Funktionen von ATS konfigurieren, indem Sie Werte für bestimmte Schlüssel in der Info. plist -Datei Ihrer APP festlegen.You can configure several of the features of ATS by setting values for specific keys in your app's Info.plist file. Die folgenden Schlüssel sind zum Steuern von ATS verfügbar (eingerückt, um zu veranschaulichen, wie Sie eingefügt werden):The following keys are available for controlling ATS (indented to show how they are nested):

NSAppTransportSecurity
    NSAllowsArbitraryLoads
    NSAllowsArbitraryLoadsInWebContent
    NSExceptionDomains
    <domain-name-for-exception-as-string>
        NSExceptionMinimumTLSVersion
        NSExceptionRequiresForwardSecrecy
        NSExceptionAllowsInsecureHTTPLoads
        NSRequiresCertificateTransparency
        NSIncludesSubdomains
        NSThirdPartyExceptionMinimumTLSVersion
        NSThirdPartyExceptionRequiresForwardSecrecy
        NSThirdPartyExceptionAllowsInsecureHTTPLoads

Jeder Schlüssel hat den folgenden Typ und Bedeutung:Each key has the following type and meaning:

  • Nsapptransportsecurity ( Dictionary ): enthält alle Einstellungs Schlüssel und-Werte für ATS.NSAppTransportSecurity (Dictionary) - Contains all of the setting keys and values for ATS.
  • Nsallowsarbitraryloads ( Boolean ): Wenn YES ATS für eine Domäne deaktiviert wird, die nicht in aufgeführt ist NSExceptionDomains .NSAllowsArbitraryLoads (Boolean) - If YES ATS will be disabled for any domain not listed in NSExceptionDomains. Bei aufgelisteten Domänen werden die angegebenen Sicherheitseinstellungen verwendet.For listed domains, the security settings specified will be used.
  • Nsallowsarbitraryloadsinwebcontent ( Boolean ): gibt YES an, ob Webseiten ordnungsgemäß geladen werden können, während der Apple Transport Security (ATS)-Schutz weiterhin für den Rest der App aktiviert ist.NSAllowsArbitraryLoadsInWebContent (Boolean) - If YES will allow web pages to load correctly while Apple Transport Security (ATS) protection is still enabled for the rest of the app.
  • Nsexceptiondomains ( Dictionary ): eine Auflistung von Domänen, die von den Sicherheitseinstellungen für eine bestimmte Domäne verwendet werden sollen.NSExceptionDomains (Dictionary) - A collection of domains that and the security settings that ATS should use for a given domain.
  • <domain-name-for-exception-as-string>( Dictionary ): Eine Auflistung von Ausnahmen für eine bestimmte Domäne (z. b.<domain-name-for-exception-as-string> (Dictionary) - A collection of exceptions for a given domain (eg. www.xamarin.com).www.xamarin.com).
  • Nsexceptionminimumtlsversion ( String ): die minimale TLS-Version als TLSv1.0 TLSv1.1 oder TLSv1.2 (Dies ist die Standardeinstellung).NSExceptionMinimumTLSVersion (String) - The minimal TLS version as either TLSv1.0, TLSv1.1 or TLSv1.2 (which is the default).
  • Nsexceptionrequirements sforwardgeheimnis ( Boolean ): Wenn NO die Domäne keine Chiffre mit vorwärts Sicherheit verwenden muss.NSExceptionRequiresForwardSecrecy (Boolean) - If NO the domain does not have to use a cipher with forward security. Der Standardwert ist YES.The default value is YES.
  • Nsexceptionallowsinsecurehttploads ( Boolean ): Wenn NO (Standardeinstellung), muss die gesamte Kommunikation mit dieser Domäne im HTTPS Protokoll vorliegen.NSExceptionAllowsInsecureHTTPLoads (Boolean) - If NO (the default) all communications with this domain must be in the HTTPS protocol.
  • Nsrequirements scertificatetransparenz ( Boolean ): Wenn YES die Secure Sockets Layer der Domäne gültige Transparenz Daten einschließen muss.NSRequiresCertificateTransparency (Boolean) - If YES the domain’s Secure Sockets Layer (SSL) must include valid transparency data. Der Standardwert ist NO.The default value is NO.
  • Nsincludessubdomains ( Boolean ): Wenn YES diese Einstellungen alle Unterdomänen dieser Domäne überschreiben.NSIncludesSubdomains (Boolean) - If YES these settings override all subdomains of this domain. Der Standardwert ist NO.The default value is NO.
  • Nsthirdpartyexceptionminimumtlsversion ( String ): die TLS-Version, die verwendet wird, wenn es sich bei der Domäne um einen Drittanbieter Dienst außerhalb der Kontrolle des Entwicklers handelt.NSThirdPartyExceptionMinimumTLSVersion (String) - The TLS version used when the domain is a 3rd party service outside of the developer's control.
  • Nsthirdpartyexceptionrequirements sforwardgeheimnis ( Boolean ): Wenn für YES eine Drittanbieter Domäne ein vorwärts Geheimnis erforderlich ist.NSThirdPartyExceptionRequiresForwardSecrecy (Boolean) - If YES a 3rd party domain requires forward secrecy.
  • Nsthirdpartyexceptionallowsinsecurehttploads ( Boolean ): Wenn YES die ATS eine nicht sichere Kommunikation mit Domänen von Drittanbietern zulassen.NSThirdPartyExceptionAllowsInsecureHTTPLoads (Boolean) - If YES the ATS will allow non-secure communication with 3rd party domains.

Deaktivieren von ATSOpting-Out of ATS

Apple empfiehlt zwar dringend die Verwendung des HTTPS Protokolls und die sichere Kommunikation mit internetbasierten Informationen, es kann jedoch vorkommen, dass dies nicht immer möglich ist.While Apple highly suggests using the HTTPS protocol and secure communication to internet based information, there might be times that this isn't always possible. Beispielsweise bei der Kommunikation mit einem Drittanbieter-Webdienst oder bei Verwendung von über das Internet übermittelten anzeigen in Ihrer APP.For example, if you are communicating with a 3rd party web service or using internet delivered ads in your app.

Wenn Ihre xamarin. IOS-App eine Anforderung an eine unsichere Domäne richten muss, deaktivieren die folgenden Änderungen an der Datei " Info. plist " der APP die Sicherheitsstandards, die von ATS für eine bestimmte Domäne erzwungen werden:If your Xamarin.iOS app must make a request to an insecure domain, the following changes to your app's Info.plist file will disable the security defaults that ATS enforces for a given domain:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.the-domain-name.com</key>
        <dict>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

Doppelklicken Sie in Visual Studio für Mac auf die Info.plist Datei im Projektmappen-Explorer, wechseln Sie zur Quell Ansicht, und fügen Sie die obigen Schlüssel hinzu:Inside Visual Studio for Mac, double-click the Info.plist file in the Solution Explorer, switch to the Source view and add the above keys:

Die Quell Ansicht der Datei "Info. plist"The Source view of the Info.plist file

Wenn Ihre APP Webinhalte von nicht sicheren Websites laden und anzeigen muss, fügen Sie der Datei " Info. plist " Ihrer APP Folgendes hinzu, damit Webseiten ordnungsgemäß geladen werden können, während der Apple Transport Security (ATS)-Schutz weiterhin für den Rest der App aktiviert ist:If your app needs to load and display web content from non-secure sites, add the following to your app's Info.plist file to allow web pages to load correctly while Apple Transport Security (ATS) protection is still enabled for the rest of the app:

<key>NSAppTransportSecurity</key>
<dict>
    <key> NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>

Optional können Sie die folgenden Änderungen an der Datei " Info. plist " Ihrer APP vornehmen, um "ATS" für alle Domänen und die Internetkommunikation vollständig zu deaktivieren:Optionally, you can make the following changes to your app's Info.plist file to completely disable ATS for all domains and internet communication:

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

Doppelklicken Sie in Visual Studio für Mac auf die Info.plist Datei im Projektmappen-Explorer, wechseln Sie zur Quell Ansicht, und fügen Sie die obigen Schlüssel hinzu:Inside Visual Studio for Mac, double-click the Info.plist file in the Solution Explorer, switch to the Source view and add the above keys:

Die Quell Ansicht der Datei "Info. plist"The Source view of the Info.plist file

Wichtig

Wenn Ihre Anwendung eine Verbindung mit einer unsicheren Website erfordert, sollten Sie die Domäne immer als Ausnahme mit eingeben, NSExceptionDomains anstatt sie vollständig mithilfe von zu deaktivieren NSAllowsArbitraryLoads .If your application requires a connection to an insecure website, you should always enter the domain as an exception using NSExceptionDomains instead of turning ATS off completely using NSAllowsArbitraryLoads. NSAllowsArbitraryLoadssollte nur in extrem Notfällen verwendet werden.NSAllowsArbitraryLoads should only be used in extreme emergency situations.

Die Deaktivierung von ATS sollte nur als letztes Mittel verwendet werden, wenn der Wechsel zu sicheren Verbindungen entweder nicht verfügbar oder nicht praktikabel ist.Again, disabling ATS should only be used as a last resort, if switching to secure connections is either unavailable or impractical.

ZusammenfassungSummary

In diesem Artikel wurden App-Transport Sicherheit (app Transport Security, ATS) vorgestellt und beschrieben, wie die sichere Kommunikation mit dem Internet erzwungen wird.This article has introduced App Transport Security (ATS) and described the way it enforces secure communications with the internet. Zunächst haben wir die Änderungen erläutert, die für eine xamarin. IOS-app unter IOS 9 erforderlich sind.First, we covered the changes ATS requires for a Xamarin.iOS app running on iOS 9. Anschließend haben wir die Kontrolle über die Features und Optionen von ATS behandelt.Then we covered controlling ATS features and options. Schließlich haben wir uns mit der Entscheidung in ihrer xamarin. IOS-App abgemeldet.Finally, we covered opting out of ATS in your Xamarin.iOS app.