iOS
앱 전송 보안 (ATS)
수색…
매개 변수
매개 변수 | 세부 |
---|---|
NSAppTransportSecurity | ATS 구성 |
NSAllowsArbitraryLoads | 어디에서나 ATS를 사용하지 않으려면 YES 로 설정하십시오. iOS 10 이상 및 macOS 10.12 이상에서는 앱의 Info.plist 파일에 다음 키가있는 경우이 키의 값이 무시됩니다. NSAllowsArbitraryLoadsInMedia, NSAllowsArbitraryLoadsInWebContent, NSAllowsLocalNetworking |
NSAllowsArbitraryLoadsInMedia | AV Foundation 프레임 워크에서 API를 사용하여로드 된 미디어에 대해 ATS를 사용하지 않으려면 YES 로 설정하십시오. (iOS 10 이상, macOS 10.12 이상) |
NSAllowsArbitraryLoadsInWebContent | YES 로 설정하면 NSURLSession 연결에 영향을주지 않고 앱의 웹보기 ( WKWebView , UIWebView , WebView )에서 ATS를 사용하지 않도록 설정합니다. (iOS 10 이상, macOS 10.12 이상) |
NSAllowsLocalNetworking | 규정되지 않은 도메인 및 .local 도메인에 대한 연결을 사용하지 않으려면 YES 로 설정하십시오. (iOS 10 이상, macOS 10.12 이상) |
NSExceptionDomains | 특정 도메인에 대한 예외 구성 |
NSIncludesSubdomains | YES 로 설정하면 선택한 도메인의 모든 하위 도메인에 예외가 적용됩니다. |
NSRequiresCertificateTransparency | 알려진 CT 로그의 유효하고 서명 된 인증서 투명성 (CT) 타임 스탬프가 도메인의 서버 (X.509) 인증서에 대해 표시되도록하려면 YES 로 설정하십시오. (iOS 10 이상, macOS 10.12 이상) |
NSExceptionAllowsInsecureHTTPLoads | 선택된 도메인에서 HTTP를 허용하려면 YES 로 설정하십시오. |
NSExceptionRequiresForwardSecrecy | 기본값은 YES . Forward Secrecy를 비활성화하고 더 많은 암호를 허용하려면 NO 로 설정하십시오. |
NSExceptionMinimumTLSVersion | 기본값은 TLSv1.2 . 가능한 값은 다음과 같습니다 TLSv1.0 , TLSv1.1 , TLSv1.2 |
NSThirdPartyExceptionAllowsInsecureHTTPLoads | NSExceptionAllowsInsecureHTTPLoads 와 비슷하지만 제어 할 수없는 도메인의 경우 |
NSThirdPartyExceptionRequiresForwardSecrecy | NSExceptionRequiresForwardSecrecy 와 비슷하지만 제어 할 수없는 도메인의 경우 |
NSThirdPartyExceptionMinimumTLSVersion | NSExceptionMinimumTLSVersion 과 비슷하지만 제어 할 수없는 도메인의 경우 |
비고
App Transport Security 는 iOS와 macOS의 보안 기능입니다. 앱이 보안되지 않은 연결을 설정하지 못하게합니다. 기본적으로 앱은 보안 HTTPS 연결 만 사용할 수 있습니다.
앱이 HTTP를 통해 서버에 연결해야하는 경우 Info.plist
에서 예외를 정의해야합니다. (자세한 내용은 예제를 참조하십시오)
참고 : 2017 년에 Apple은 ATS를 시행 할 것입니다. 즉, Info.plist
정의 된 ATS 예외가있는 응용 프로그램을 더 이상 업로드 할 수 없습니다. 훌륭한 인수를 제공 할 수 있고 HTTP를 사용해야하는 이유는 Apple에 문의하면 예외를 정의 할 수 있습니다. (출처 : WWDC 2016 - 세션 706 )
App Transport Security 설정에 대한 더 자세한 정보는 CocoaKeys Documentation 에서 찾을 수 있습니다.
모든 HTTP 내용로드
Apple은 iOS 9가 탑재 된 ATS를 새로운 보안 기능으로 도입하여 앱과 웹 서비스 간의 프라이버시와 보안을 향상 시켰습니다. ATS는 기본적으로 비 HTTPS 요청을 모두 실패합니다. 프로덕션 환경에서는이 기능이 매우 유용 할 수 있지만 테스트 중에는 문제가 될 수 있습니다.
ATS는 NSAppTransportSecurity
사전 (Xcode Info.plist 편집기의 App Transport Security Settings
을 사용하여 대상의 Info.plist
파일에 구성됩니다. 모든 HTTP 내용을 허용하려면 Allow Arbitrary Loads
( NSAllowsArbitraryLoads
) 부울을 추가하고 YES
설정하십시오. 프로덕션 응용 프로그램에는 권장되지 않으며 HTTP 콘텐츠가 필요한 경우 대신 선택적으로 사용하도록 설정하는 것이 좋습니다.
선택적으로 HTTP 콘텐츠로드
모든 HTTP 콘텐츠를 활성화하는 것과 마찬가지로 모든 구성은 App Transport Security Settings
됩니다. Exception Domains
사전 ( NSExceptionDomains
)을 최상위 ATS 설정에 추가하십시오.
모든 도메인에 대해 Exception Domains에 사전 항목을 추가합니다. 여기서 키는 문제의 도메인입니다. 해당 도메인에 대한 HTTPS 요구 사항을 사용하지 않으려면 NSExceptionAllowsInsecureHTTPLoads
를 YES
로 설정하십시오.
엔드 포인트에 SSL이 필요합니다.
iOS 9에 도입 된 모든 엔드 포인트는 HTTPS 사양을 준수해야합니다.
SSL을 사용하지 않는 모든 엔드 포인트는 콘솔 로그에서 경고와 함께 실패합니다. 응용 프로그램에 인터넷 연결이 실패한 것으로 보입니다.
예외를 설정하려면 Info.plist 파일에 다음을 추가하십시오 :
- 특정 도메인 (testdomain.com) 만 허용 :
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
이러한 동작을 허용하는 키는 NSExceptionAllowsInsecureHTTPLoads
입니다. 이 경우 앱은 언급 된 도메인 (testdomain.com)에만 HTTP 연결을 허용하고 다른 모든 HTTP 연결을 차단합니다.
NSIncludesSubdomains
키는 언급 된 도메인 (testdomain.com)의 모든 하위 도메인도 허용해야 함을 지정합니다.
- 모든 도메인 허용 :
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
이 경우 앱은 모든 도메인에 HTTP 연결을 허용합니다. 2017 년 1 월 1 일부터이 플래그를 사용하면 앱 스토어 검토가 철저히 이루어 지므로 앱 개발자는 처음부터이 예외를 사용해야하는 이유를 설명해야합니다. 가능한 설명은 다음과 같습니다.
- 개인화 된 정보가없는 암호화 된 미디어 콘텐츠를로드하는 응용 프로그램입니다.
- 보안 연결을 사용하도록 업그레이드 할 수없는 장치에 연결.
- 다른 엔터티가 관리하고 보안 연결을 지원하지 않는 서버에 대한 연결입니다.