Xamarin.ios의 앱 전송 보안App Transport Security in Xamarin.iOS

ATS (app Transport Security)는 인터넷 리소스 (예: 앱의 백 엔드 서버)와 앱 간에 보안 연결을 적용 합니다.App Transport Security (ATS) enforces secure connections between internet resources (such as the app's back-end server) and your app.

이 문서에서는 앱 전송 보안이 iOS 9 앱에서 적용 하는 보안 변경 내용 및이에 해당 하는 ATS 구성 옵션설명하 고 ATS를 옵트아웃 하는 방법을 설명 합니다. 필요한 경우 ATS.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. ATS은 기본적으로 사용 하도록 설정 되어 있으므로 안전 하지 않은 모든 인터넷 연결이 iOS 9 앱에서 예외를 발생 시킵니다 (명시적으로 허용 하지 않는 한).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).

앱 전송 보안 정보About App Transport Security

위에서 설명한 것 처럼 ATS는 iOS 9 및 OS X El Capitan의 모든 인터넷 통신이 안전한 연결 모범 사례를 준수 하 여 앱 또는 해당 앱이 있는 라이브러리를 통해 직접 중요 한 정보가 노출 되지 않도록 방지 합니다. 필요로.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.

기존 앱의 경우 가능 하면 항상 HTTPS 프로토콜을 구현 합니다.For existing apps, implement the HTTPS protocol whenever possible. 새 Xamarin.ios 앱의 경우 인터넷 리소스와 통신할 때 HTTPS 독점적으로 사용 해야 합니다.For new Xamarin.iOS apps, you should use HTTPS exclusively when communicating with internet resources. 또한 높은 수준의 API 통신은 TLS 버전 1.2을 사용 하 여 암호화 해야 합니다.Additionally, high-level API communication must be encrypted using TLS version 1.2 with forward secrecy.

NSUrlConnection, Cfurl 또는 NSUrlSession 를 사용 하 여 만든 모든 연결은 iOS 9 및 OS X 10.11 (El Capitan) 용으로 빌드된 앱에서 기본적으로 ATS을 사용 합니다.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).

기본 ATS 동작Default ATS Behavior

ATS는 iOS 9 및 OS X 10.11 (El Capitan) 용으로 빌드된 앱에서 기본적으로 사용 하도록 설정 되어 있으므로 NSUrlConnection, Cfurl 또는 NSUrlSession 를 사용 하는 모든 연결에는 ATS 보안 요구 사항이 적용 됩니다.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. 연결이 이러한 요구 사항을 충족 하지 않는 경우에는 예외와 함께 실패 합니다.If your connections do not meet these requirement, they will fail with an exception.

ATS 연결 요구 사항ATS Connection Requirements

ATS는 모든 인터넷 연결에 대해 다음과 같은 요구 사항을 적용 합니다.ATS will enforce the following requirements for all internet connections:

  • 모든 연결 암호화는 전달 보안을 사용 해야 합니다.All connection ciphers must be using forward secrecy. 아래에서 허용 되는 암호화 목록을 참조 하십시오.See the list of accepted ciphers below.
  • TLS (전송 계층 보안) 프로토콜은 버전 1.2 이상 이어야 합니다.The Transport Layer Security (TLS) protocol must be version 1.2 or greater.
  • 2048 비트 이상 RSA 키가 있는 SHA256 지문을 하나 이상 사용 하거나 모든 인증서에 256 비트 이상 ECC (타원 Curve) 키를 사용 해야 합니다.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.

ATS가 iOS 9에서 기본적으로 사용 하도록 설정 되어 있기 때문에 이러한 요구 사항을 충족 하지 않는 연결을 시도 하면 예외가 throw 됩니다.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.

ATS 호환 암호화ATS Compatible Ciphers

ATS 보안 인터넷 통신에서 다음과 같은 전달 보안 암호화 유형을 허용 합니다.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

IOS 인터넷 통신 클래스를 사용 하는 방법에 대 한 자세한 내용은 Apple의 NSURLConnection 클래스 참조, Cfurl 참조 또는 NSURLSession 클래스 참조를 참조 하세요.For more information about working with iOS internet communication classes, please see Apple's NSURLConnection Class Reference, CFURL Reference or NSURLSession Class Reference.

Xamarin.ios에서 ATS 지원Supporting ATS in Xamarin.iOS

ATS는 iOS 9 및 OS X El Capitan에서 기본적으로 사용 하도록 설정 되어 있기 때문에 Xamarin.ios 앱 또는 사용 중인 라이브러리나 서비스에서 인터넷에 연결 하는 경우 몇 가지 작업을 수행 해야 합니다. 그렇지 않으면 연결 시 예외가 throw 됩니다.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.

기존 앱의 경우 Apple은 가능한 한 빨리 HTTPS 프로토콜을 지 원하는 것으로 제안 합니다.For an existing app, Apple suggests you support the HTTPS protocol as soon as possible. HTTPS를 지원 하지 않거나 HTTPS를 지원 하지 않는 타사 웹 서비스에 연결 하는 것이 불가능 한 경우 ATS에서 옵트아웃 (opt out) 할 수 있습니다.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. 자세한 내용은 아래의 ATS에서 옵트아웃 (옵트아웃) 섹션을 참조 하세요.See the Opting-Out of ATS section below for more details.

새 Xamarin.ios 앱의 경우 인터넷 리소스와 통신할 때 HTTPS 독점적으로 사용 해야 합니다.For a new Xamarin.iOS app, you should use HTTPS exclusively when communicating with internet resources. 이는 가능 하지 않으며 ATS 옵트아웃 (opt out)을 수행 해야 하는 상황이 발생할 수 있습니다 (예: 타사 웹 서비스 사용).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.

또한 ATS는 TLS 버전 1.2을 사용 하 여 높은 수준의 API 통신을 전달 하는 보안을 적용 합니다.Additionally, ATS enforces high-level API communication to be encrypted using TLS version 1.2 with forward secrecy. 자세한 내용은 위의 ATS Connection 요구 사항ATS Compatible 암호 섹션을 참조 하세요.See the ATS Connection Requirements and ATS Compatible Ciphers sections above for more details.

TLS (전송 계층 보안)에 익숙하지 않을 수 있지만 SSL (Secure Socket layer)의 후속 작업 이며 네트워크 연결을 통해 보안을 적용 하기 위한 암호화 프로토콜의 컬렉션을 제공 합니다.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.

TLS 수준은 사용 하는 웹 서비스에 의해 제어 되므로 응용 프로그램의 컨트롤 외부에 있습니다.The TLS level is controlled by the web service that you are consuming and is therefore outside of the app's control. HttpClientModernHttpClient는 모두 서버에서 지 원하는 가장 높은 수준의 TLS 암호화를 자동으로 사용 해야 합니다.Both the HttpClient and the ModernHttpClient should automatically use the highest level of TLS encryption supported by the server.

통신 하는 서버 (특히 타사 서비스인 경우)에 따라 전달 보안을 사용 하지 않도록 설정 하거나 낮은 TLS 수준을 선택 해야 할 수 있습니다.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. 자세한 내용은 아래의 ATS 옵션 구성 섹션을 참조 하세요.See the Configuring ATS Options section below for more details.

중요

앱 전송 보안은 관리 되는 HTTPClient 구현을사용 하는 Xamarin 앱에는 적용 되지 않습니다.App Transport Security does not apply to Xamarin apps using Managed HTTPClient implementations. 이는 CFNetwork Httpclient 구현을 사용 하는 연결 또는 NSURLSession httpclient 구현 에만 적용 됩니다.It applies to connections using CFNetwork HTTPClient implementations or NSURLSession HTTPClient implementations only.

HTTPClient 구현 설정Setting the HTTPClient Implementation

IOS 앱에서 사용 하는 HTTPClient 구현을 설정 하려면 솔루션 탐색기 에서 프로젝트 를 두 번 클릭 하 여 프로젝트 옵션을 엽니다.To set the HTTPClient Implementation used by an iOS app, double-click the Project in the Solution Explorer to open the Project Options. IOS 빌드 로 이동 하 여 httpclient 구현 드롭다운에서 원하는 클라이언트 형식을 선택 합니다.Navigate to iOS Build and select the desired client type under the HttpClient implementation dropdown:

관리 되는 처리기Managed Handler

관리 되는 처리기는 이전 버전의 Xamarin.ios와 함께 제공 되는 완전히 관리 되는 HttpClient 처리기 이며 기본 처리기입니다.The Managed handler is the fully managed HttpClient handler that has been shipped with previous versions of Xamarin.iOS and is the default handler.

Pros:

  • 이는 Microsoft .NET 및 이전 버전의 Xamarin과 가장 호환 됩니다.It is the most compatible with Microsoft .NET and older version of Xamarin.

단점Cons:

  • IOS와 완전히 통합 되지 않습니다 (예: TLS 1.0로 제한 됨).It is not fully integrated with iOS (e.g it is limited to TLS 1.0).
  • 일반적으로 기본 Api 보다 훨씬 느립니다.It is usually much slower than the native APIs.
  • 더 많은 관리 코드가 필요 하 고 더 큰 앱이 생성 됩니다.It requires more managed code and creates larger apps.

CFNetwork 처리기CFNetwork Handler

CFNetwork 기반 처리기는 네이티브 CFNetwork 프레임 워크를 기반으로 합니다.The CFNetwork based handler is based on the native CFNetwork framework.

Pros:

  • 는 더 나은 성능과 더 작은 실행 파일 크기를 위해 기본 API를 사용 합니다.Uses native API for better performance and smaller executable sizes.
  • TLS 1.2와 같은 최신 표준에 대 한 지원을 추가 합니다.Adds support for newer standards such as TLS 1.2.

단점Cons:

  • IOS 6 이상이 필요 합니다.Requires iOS 6 or later.
  • WatchOS에서 사용할 수 없습니다.Not available of watchOS.
  • 일부 HttpClient 기능 및 옵션을 사용할 수 없습니다.Some HttpClient features and options are not available.

NSUrlSession 처리기NSUrlSession Handler

NSUrlSession 기반 처리기는 네이티브 NSUrlSession API를 기반으로 합니다.The NSUrlSession based handler is based on the native NSUrlSession API.

Pros:

  • 는 더 나은 성능과 더 작은 실행 파일 크기를 위해 기본 API를 사용 합니다.Uses native API for better performance and smaller executable sizes.
  • TLS 1.2와 같은 최신 표준에 대 한 지원을 추가 합니다.Adds support for newer standards such as TLS 1.2.

단점Cons:

  • IOS 7 이상이 필요 합니다.Requires iOS 7 or later.
  • 일부 HttpClient 기능 및 옵션을 사용할 수 없습니다.Some HttpClient features and options are not available.

ATS 문제 진단Diagnosing ATS Issues

직접 또는 iOS 9의 웹 보기에서 인터넷에 연결 하려고 할 때 다음과 같은 형식으로 오류가 발생할 수 있습니다.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:

앱 전송 보안이 안전 하지 않으므로 일반 텍스트 HTTP (http://www.-the-blocked-domain.com) 리소스 로드를 차단 했습니다.App Transport Security has blocked a cleartext HTTP (http://www.-the-blocked-domain.com) resource load since it is insecure. 임시 예외는 앱의 info.plist 파일을 통해 구성할 수 있습니다.Temporary exceptions can be configured via your app's Info.plist file.

IOS9에서 ATS (App Transport Security)는 인터넷 리소스 (예: 앱의 백 엔드 서버)와 앱 간 보안 연결을 적용 합니다.In iOS9, App Transport Security (ATS) enforces secure connections between internet resources (such as the app's back-end server) and your app. 또한 ATS는 TLS 버전 1.2을 사용 하 여 암호화 하기 위해 HTTPS 프로토콜 및 고급 API 통신을 사용 하는 통신이 필요 합니다.Additionally, ATS requires communication using the HTTPS protocol and high-level API communication to be encrypted using TLS version 1.2 with forward secrecy.

ATS는 iOS 9 및 OS X 10.11 (El Capitan) 용으로 빌드된 앱에서 기본적으로 사용 하도록 설정 되어 있으므로 NSURLConnection, CFURL 또는 NSURLSession를 사용 하는 모든 연결에는 ATS 보안 요구 사항이 적용 됩니다.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. 연결이 이러한 요구 사항을 충족 하지 않는 경우에는 예외와 함께 실패 합니다.If your connections do not meet these requirement, they will fail with an exception.

또한 Apple은 컴파일되어 ATS/TLS 문제를 진단 하는 데 사용할 수 있는 TLSTool 샘플 앱 (또는 선택적으로 Xamarin 및 C#로 트랜스 코딩)을 제공 합니다.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. 이 문제를 해결 하는 방법에 대 한 자세한 내용은 아래 ATS의 옵트아웃 (옵트아웃) 섹션을 참조 하세요.Please see the Opting-Out of ATS section below for information on how to solve this issue.

ATS 옵션 구성Configuring ATS Options

앱의 info.plist 파일에서 특정 키에 대 한 값을 설정 하 여 ATS의 여러 기능을 구성할 수 있습니다.You can configure several of the features of ATS by setting values for specific keys in your app's Info.plist file. 다음 키는 ATS 제어 하는 데 사용할 수 있습니다 (_중첩 된 방법을 표시 하도록 들여쓰기_됨).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

각 키의 형식과 의미는 다음과 같습니다.Each key has the following type and meaning:

  • NsappATS security (Dictionary)-모든 설정 키와에 대 한 값을 포함 합니다.NSAppTransportSecurity (Dictionary) - Contains all of the setting keys and values for ATS.
  • NSAllowsArbitraryLoads (Boolean)-NSExceptionDomains에 나열 되지 않은 모든 도메인에 대해 YES ATS를 사용 하지 않도록 설정 합니다.NSAllowsArbitraryLoads (Boolean) - If YES ATS will be disabled for any domain not listed in NSExceptionDomains. 나열 된 도메인에 대해 지정 된 보안 설정이 사용 됩니다.For listed domains, the security settings specified will be used.
  • NSAllowsArbitraryLoadsInWebContent (Boolean)-YES는 응용 프로그램의 나머지 부분에 대해 ATS (Apple Transport Security) 보호가 계속 사용 되는 동안 웹 페이지를 올바르게 로드할 수 있습니다.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)-ATS에서 지정 된 도메인에 사용 해야 하는 보안 설정 및 도메인 모음입니다.NSExceptionDomains (Dictionary) - A collection of domains that and the security settings that ATS should use for a given domain.
  • <도메인 이름-예외 > (Dictionary)-지정 된 도메인에 대 한 예외 모음 (예:<domain-name-for-exception-as-string> (Dictionary) - A collection of exceptions for a given domain (eg. www.xamarin.com).www.xamarin.com).
  • NSExceptionMinimumTLSVersion (String)-최소 TLS 버전은 TLSv1.0, TLSv1.1 또는 TLSv1.2 (기본값)입니다.NSExceptionMinimumTLSVersion (String) - The minimal TLS version as either TLSv1.0, TLSv1.1 or TLSv1.2 (which is the default).
  • NSExceptionRequiresForwardSecrecy (Boolean)-NO 도메인은 전달 보안이 있는 암호를 사용할 필요가 없습니다.NSExceptionRequiresForwardSecrecy (Boolean) - If NO the domain does not have to use a cipher with forward security. 기본값은 YES여야 합니다.The default value is YES.
  • NSExceptionAllowsInsecureHTTPLoads (Boolean)-NO (기본값) 이면이 도메인과의 모든 통신이 HTTPS 프로토콜에 있어야 합니다.NSExceptionAllowsInsecureHTTPLoads (Boolean) - If NO (the default) all communications with this domain must be in the HTTPS protocol.
  • NSRequiresCertificateTransparency (Boolean)-YES 경우 도메인의 SSL(SECURE SOCKETS LAYER) (SSL)에 유효한 투명도 데이터가 포함 되어야 합니다.NSRequiresCertificateTransparency (Boolean) - If YES the domain’s Secure Sockets Layer (SSL) must include valid transparency data. 기본값은 NO여야 합니다.The default value is NO.
  • NSIncludesSubdomains (Boolean)-YES 경우 이러한 설정이이 도메인의 모든 하위 도메인을 재정의 합니다.NSIncludesSubdomains (Boolean) - If YES these settings override all subdomains of this domain. 기본값은 NO여야 합니다.The default value is NO.
  • NSThirdPartyExceptionMinimumTLSVersion (String)-도메인이 개발자의 제어를 벗어난 타사 서비스인 경우 사용 되는 TLS 버전입니다.NSThirdPartyExceptionMinimumTLSVersion (String) - The TLS version used when the domain is a 3rd party service outside of the developer's control.
  • NSThirdPartyExceptionRequiresForwardSecrecy (Boolean)-YES 타사 도메인에는 전달 보안 기능이 필요 합니다.NSThirdPartyExceptionRequiresForwardSecrecy (Boolean) - If YES a 3rd party domain requires forward secrecy.
  • NSThirdPartyExceptionAllowsInsecureHTTPLoads (Boolean)-YES 이면 ATS가 타사 도메인과의 비보안 통신을 허용 합니다.NSThirdPartyExceptionAllowsInsecureHTTPLoads (Boolean) - If YES the ATS will allow non-secure communication with 3rd party domains.

ATS의 옵트아웃Opting-Out of ATS

Apple은 HTTPS 프로토콜을 사용 하 여 인터넷 기반 정보에 대 한 보안 통신을 항상 제안 하지만 이것이 항상 가능 하지는 않을 수 있습니다.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. 예를 들어 타사 웹 서비스와 통신 하거나 앱에서 인터넷에 배달 된 광고를 사용 하는 경우입니다.For example, if you are communicating with a 3rd party web service or using internet delivered ads in your app.

Xamarin.ios 앱이 보안 되지 않은 도메인에 대 한 요청을 수행 해야 하는 경우 앱의 info.plist 파일을 다음과 같이 변경 하면 ATS가 지정 된 도메인에 대해 적용 하는 보안 기본값을 사용 하지 않도록 설정 됩니다.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>

Mac용 Visual Studio 내에서 솔루션 탐색기에서 Info.plist 파일을 두 번 클릭 하 고 원본 뷰로 전환 하 여 위의 키를 추가 합니다.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:

앱이 보안 되지 않은 사이트에서 웹 콘텐츠를 로드 하 고 표시 해야 하는 경우 앱의 info.plist 파일에 다음을 추가 하 여 앱의 나머지 부분에 대해 ATS (Apple Transport Security) 보호를 사용 하도록 설정 하는 동안 웹 페이지를 올바르게 로드할 수 있도록 합니다.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>

필요에 따라 앱의 info.plist 파일을 다음과 같이 변경 하 여 모든 도메인 및 인터넷 통신에 대해 ATS를 완전히 사용 하지 않도록 설정할 수 있습니다.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>

Mac용 Visual Studio 내에서 솔루션 탐색기에서 Info.plist 파일을 두 번 클릭 하 고 원본 뷰로 전환 하 여 위의 키를 추가 합니다.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:

중요

응용 프로그램에 보안 되지 않은 웹 사이트에 대 한 연결이 필요한 경우에는 NSAllowsArbitraryLoads를 사용 하 여 ATS를 완전히 켜는 대신 NSExceptionDomains를 사용 하 여 도메인을 예외로 입력 해야 합니다.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. NSAllowsArbitraryLoads은 심각한 응급 상황 에서만 사용 해야 합니다.NSAllowsArbitraryLoads should only be used in extreme emergency situations.

ATS를 사용 하지 않도록 설정 하는 것은 보안 연결로 전환 하는 것이 불가능 하거나 불가능 한 경우 마지막 수단 으로만 사용 해야 합니다.Again, disabling ATS should only be used as a last resort, if switching to secure connections is either unavailable or impractical.

요약Summary

이 문서에서는 ATS (앱 전송 보안)를 소개 하 고 인터넷과의 보안 통신을 적용 하는 방법에 대해 설명 했습니다.This article has introduced App Transport Security (ATS) and described the way it enforces secure communications with the internet. 먼저 iOS 9에서 실행 되는 Xamarin.ios 앱에 필요한 변경 내용에 대해 설명 ATS.First, we covered the changes ATS requires for a Xamarin.iOS app running on iOS 9. 그런 다음 ATS 기능 및 옵션 제어에 대해 설명 했습니다.Then we covered controlling ATS features and options. 마지막으로 Xamarin.ios 앱에서 ATS를 옵트아웃 하는 방법에 대해 설명 했습니다.Finally, we covered opting out of ATS in your Xamarin.iOS app.