애플의 개발 플랫폼에는 App Transport Security(ATS) 라는 네트워크 보안 메커니즘이 있는데, 이는 App 및 App 확장에 적용되며 기본적으로 켜집니다. 이 메커니즘은 app 가 네트워크에 액세스할 때 업계 표준 프로토콜 및 암호화 방법을 사용하며, 알려진 주요 보안 위험은 없어 사용자의 개인 정보 보호 및 데이터 무결성을 보장합니다. 앱에 대한 사용자의 신뢰를 키울 수 있습니다.
개발자는 info.plist 에서 이 키를 구성하여 네트워크 보안 정책을 사용자 정의할 수 있습니다. 예를 들면 다음과 같습니다.
NSAppTransportSecurity 에 대한 지원은 iOS9.0 부터 OS X v 10. 1 1 app 및 app 확장에 적용됩니다.
IOS 10.0 및 macOS 10. 12 부터 다음 하위 항목에 대한 지원이 추가되었습니다.
IOS9.0, OS x v10.11SDK 이상을 사용하는 app 의 경우 ATS (app Transport Security) 입니다
ATS 가 활성화된 경우 모든 HTTP 요청은 HTTPS( RFC 28 18) 접속이어야 합니다. 비보안 HTTP 요청은 실패합니다. ATS 는 TLS (전송 계층 보안) v 1.2 (RFC 5246) 를 사용합니다. 보안 연결에 대한 자세한 내용은 HTTPS 서버 신뢰 평가를 참조하십시오.
다음은 사전 NSAppTransportSecurity 의 전체 구조이며 모든 키는 필요하지 않습니다.
모든 키는 app 의 전체 ATS 정책을 정의하는 기본 키라는 두 가지 범주로 나눌 수 있습니다. NSExceptionDomains 아래의 키인 하위 키는 도메인 이름을 개별적으로 구성하는 데 사용됩니다.
기본 키는 다음과 같습니다.
위의 기본 키에 대한 자세한 내용은 표 2 를 참조하십시오.
모든 하위 항목은 NSExceptionDomain 에 속합니다. 이 키를 Info.plist 에 추가합니다.
예를 들어 NSAllowsArbitraryLoadsInMedia 는 적시에 YES 로 설정되어 있지만 NSExceptionDomain 이 나타내는 도메인 이름은 안전하지 않은 미디어 컨텐츠에 액세스할 수 없습니다.
이 설정에 따라 도메인 이름을 ATS 로 구성할 수 있으며 보안 조치를 늘리거나 줄일 수 있습니다. 예를 들면 다음과 같습니다.
또한 인증서 투명성을 참조하여 특정 도메인 이름에 액세스할 때 보안을 보장합니다. 자세한 내용은 인증서 투명도 를 참조하십시오.
NSExceptionDomains 사전 작성:
NSExceptionDomains 에 대한 자세한 내용은 표 3 을 참조하십시오.
ATS 는 NSURLSession 및 모든 관련 API 에서 지원됩니다. app 가 iOS9.0 SDK 또는 OS x v10.11SDK 이상을 기반으로 개발된 경우 ATS 는 자동으로 (이전 NSURLConnection 도 위 SDK 에서 ATS 지원을 활성화합니다. 그러나 기본 네트워크 API 또는 타사 네트워크 라이브러리를 사용할 경우 ATS 로 보호되지 않습니다.
IOS9.0 또는 OS X v 10. 1 1 에서 ATS 가 지원되지 않으며 NSAppTransportSecurity 는 운영 체제에서 무시됩니다. ATS 를 사용할 수 없는 경우 서버는 RFC 28 18 에서 제공하는 표준 HTTPS 보안 정책에 따라 인증됩니다.
IOS9.0 또는 OS X v 10. 1 1 에서 응용 프로그램을 실행할 때 네트워크 연결을 계속 사용할 수 있지만 ATS 는 작동하지 않습니다.
ATS 는 공용 도메인 이름에만 유효합니다. ATS 는 연결이 끊어진 연결에 유효하지 않습니다.
잘못된 도메인 이름이나 로컬 도메인 이름에 연결하려면 NSAllowsLocalNetworking 을 YES 로 설정해야 합니다.
ATS 가 완전히 열리면 시스템 요구 사항 app 의 HTTPS 연결은 다음 요구 사항을 충족해야 합니다.
위의 표준은 앞으로 변경될 수 있습니다. 그러나 app 바이너리 패키지의 호환성에는 영향을 주지 않습니다.
잠시 생략하다
서버 신용 검증 규칙을 자체적으로 재작성할 수 있는지 여부는 도메인 이름에 대해 ATS 가 켜져 있는지 여부에 따라 달라집니다. 설명은 다음과 같습니다.
ATS 의 일부 구성으로 인해 App Store 가 검토될 수 있으므로 개발자는 이유를 설명해야 합니다. 이러한 키는 다음과 같습니다.
다음은 참고할 수 있는 몇 가지 이유의 예입니다.
App Store 에 감사를 제출할 때 개발자는 app 가 보안 연결을 사용할 수 없는 이유를 설명하는 충분한 정보를 적극적으로 제공해야 합니다.
표 2 에는 NSAppTransportSecurity 사전에 대한 모든 기본 키 정보가 나와 있습니다. 개발자는 이러한 기본 키를 정의하여 응용 프로그램의 네트워크 동작을 구성할 수 있습니다. NSExceptionDomains 의 하위에 대한 자세한 내용은 표 3 을 참조하십시오.
표 2 ATS 사전 기본 키
표 3 은 도메인 이름 네트워크 보안을 구성하는 데 사용되는 키를 나열합니다.
표 3 도메인 이름에 대한 네트워크 보안의 하위 구성
다음은 NSAppTransportSecurity 의 일반적인 구성에 대한 설명입니다.
전체 ATS 정책에 영향을 주지 않고 특정 서버에 대한 안전하지 않은 네트워크 요청 (예: 그림 서버에서 그림 요청) 만 Info.plist 에서 다음과 같이 구성할 수 있습니다.
중요: 위 구성을 사용하기 전에 발생할 수 있는 잠재적 위협에 주의하십시오. 예를 들어 HTTP 연결을 통해 서버에서 미디어 리소스를 가져오면 다음과 같은 위험이 발생할 수 있습니다.
전체 ATS 정책에 영향을 주지 않고 특정 서버만 낮추는 HTTPS 보안 수준 (이전 버전의 TLS/SSL 프로토콜 사용 및 순방향 기밀 유지 지원 안 함 포함) 은 Info.plist 에서 다음과 같이 구성할 수 있습니다.
브라우저 응용 프로그램을 개발하는 경우 사용자가 모든 URL 에 액세스할 수 있도록 해야 합니다. 이 경우 개발자는 응용 프로그램 업데이트를 게시하는 서버와 같은 관리 대상 서버에 보안 연결을 사용해야 합니다.
관리 대상 서버에 액세스하여 ATS 보호를 받고 다른 비보안 액세스를 사용할 수 있도록 Info.plist 에서 다음과 같이 구성할 수 있습니다.
잠시 생략하다
잠시 생략하다