info.plist
다음 오류 메시지에 따라 HTTP 모드를 활성화 하려면 어떤 설정을해야 합니까?
전송 보안이 안전하지 않기 때문에 일반 텍스트 HTTP (http : //) 리소스로드를 차단했습니다. 앱의 Info.plist 파일을 통해 임시 예외를 구성 할 수 있습니다.
내 도메인이라고 가정합니다 example.com
.
답변
Xcode 8.0 이상 및 Swift 2.2 이상 또는 Objective C를 사용하는 경우 :
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
답변
NSAppTransportSecurity 사용 :
당신은 설정해야 NSAllowsArbitraryLoads의 핵심 YES 에서 NSAppTransportSecurity의 당신의 Info.plist 파일에 사전을.
답변
답변
포럼 게시물 Application Transport Security?를 참조하십시오 . .
iOS 9 및 OSX 10.11에서 앱 전송 보안 예외 구성 페이지도 참조하십시오 .
예를 들어 다음과 같은 특정 도메인을 추가 할 수 있습니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
게으른 옵션은 다음과 같습니다.
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
노트 :
info.plist
는 XML 파일이므로이 코드를 파일의 어느 곳에 나 배치 할 수 있습니다.
답변
이것은 테스트되었으며 iOS 9 GM 시드에서 작동했습니다. 이는 특정 도메인이 HTTPS 대신 HTTP를 사용할 수 있도록 구성되었습니다 .
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key> <!--Include your domain at this line -->
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
NSAllowsArbitraryLoads
모든 안전하지 않은 연결을 false
허용하지 않기 때문에 이어야 하지만 예외 목록에서는 HTTPS없이 일부 도메인에 연결할 수 있습니다 .
답변
이것은 plist에 이것을 추가하는 빠른 해결 방법이지만 권장되지는 않습니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
어떤 의미입니까 ( Apple의 문서 에 따름 ) :
NSAllowsArbitraryLoads
NSExceptionDomains 사전에 나열되지 않은 모든 도메인에 대해 App Transport Security를 비활성화하는 데 사용되는 부울 값입니다. 나열된 도메인은 해당 도메인에 지정된 설정을 사용합니다.기본값 NO는 모든 연결에 대한 기본 App Transport Security 동작이 필요합니다.
나는 정말로 링크를 추천한다 :
- 애플의 기술 노트
- WWDC 2015 세션 706 (보안 및 앱) 은 약 1:50에 시작됩니다.
- WWDC 2015 세션 711 (NSURLSession과의 네트워킹)
- 블로그 게시물 App Transport Security로 앱 배송
이유와 모든 의미를 이해하는 데 도움이됩니다.
아래의 XML (파일 Info.plist)은 다음과 같습니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
모든 페이지에 대한 임의의 호출을 허용하지 않지만 PAGE_FOR_WHICH_SETTINGS_YOU_WANT_TO_OVERRIDE
연결이 HTTP 프로토콜을 사용하도록 허용합니다.
위의 XML에 다음을 추가 할 수 있습니다.
<key>NSIncludesSubdomains</key>
<true/>
지정된 주소의 하위 도메인에 대해 안전하지 않은 연결을 허용하려는 경우
최선의 방법은 모든 임의의로드를 차단하고 (false로 설정) 예외를 추가하여 알려진 주소 만 허용하는 것입니다.
2018 업데이트 :
Apple 은이 기능을 끄지 않는 것이 좋습니다. 더 많은 정보는 207 세션 WWDC 2018 에서 보안과 관련하여 더 많은 설명이 나와 있습니다.
역사적인 이유와 개발 단계에 대한 원래의 대답을 남기기
답변
이 문제가 발생 하는 이유 와 그 해결 방법 에 대해 더 자세한 내용을 알고 싶은 분은 아래를 읽으십시오.
iOS 9가 도입됨에 따라 앱과 웹 서비스 간의 연결 보안을 향상 시키려면 앱과 웹 서비스 간의 보안 연결이 모범 사례를 따라야합니다 . 모범 사례 동작은 App Transport Security 에 의해 다음과 같이 시행됩니다 .
- 우발적 인 공개를 방지하고
- 안전한 기본 동작을 제공하십시오.
App Transport Security Technote에 설명 된 대로 웹 서비스와 통신 할 때 App Transport Security에는 다음 요구 사항과 동작이 있습니다.
- 서버는 최소한 TLS (Transport Layer Security) 프로토콜 버전 1.2를 지원해야합니다.
- 연결 암호는 순방향 보안을 제공하는 암호로 제한됩니다 (아래 암호 목록 참조).
- 인증서는 2048 비트 이상의 RSA 키 또는 256 비트 이상의 ECC (Elliptic-Curve) 키와 함께 SHA256 이상의 서명 해시 알고리즘을 사용하여 서명해야합니다.
- 유효하지 않은 인증서는 하드 실패로 연결되지 않습니다.
즉, 웹 서비스 요청은 a.) HTTPS를 사용 하고 b.) 순방향 보안이있는 TLS v1.2를 사용하여 암호화해야합니다.
그러나 다른 게시물에서 언급했듯이 앱에서 안전하지 않은 도메인을 지정하여 App Transport Security에서이 새로운 동작을 재정의 할 수 있습니다 Info.plist
.
재정의하려면 NSAppTransportSecurity
> NSExceptionDomains
사전 속성을 에 추가해야 합니다 Info.plist
. 다음으로 웹 서비스의 도메인을 NSExceptionDomains
사전에 추가합니다 .
예를 들어, www.yourwebservicehost.com 호스트에서 웹 서비스에 대한 App Transport Security 동작을 무시하려면 다음을 수행하십시오.
-
Xcode에서 앱을 엽니 다.
-
Info.plist
프로젝트 네비게이터 에서 파일을 찾아서 마우스 오른쪽 단추로 클릭 한 후 다른 이름으로 열기 > 소스 코드 메뉴 옵션을 선택하십시오. 속성 목록 파일이 오른쪽 창에 나타납니다. -
다음 특성 블록을 기본 특성 사전 (첫 번째 아래) 안에 넣으십시오
<dict>
.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
추가 도메인에 대한 예외를 제공해야하는 경우 아래에 다른 사전 속성을 추가합니다 NSExceptionDomains
.
위에서 참조한 키에 대한 자세한 정보는 이미 언급 된 기술 노트를 읽으십시오 .
