일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Objective C
- appbarlayout
- Push
- IOS10
- 인증서 정보 뽑아내기
- ios framework
- java
- embedd
- SO 파일
- ios
- V8 Engine
- FlexiblePageView
- Status Bar
- JavaScript Engine
- Android
- IMAGE
- v8 engine xcode build
- 공인인증서 만료일
- Magnify Anim
- apns
- android log dump
- apk 다운사이징
- apache
- Google V8 Engine
- 공인인증서 정보
- PageControl
- so file
- Android NDK시스템
- sha1 convert hashkey
- 안드로이드
- Today
- Total
caTea 블로그
ios http/https 대응 본문
ATS필수조건과 iOS10의 출시로 어떤 것이 바뀌는가?
ATS는 지금까지 ATS 자체의 비활성화와 화이트리스트를 작성하고 ATS통신 차단 대상에서 제외할 도메인을 지정하거나 전체 ATS를 해제하면서 일부 도메인은 ATS대상으로 하거나 ATS가 허용하는 암호화수준을 낮추는 등의 사용자정의가 가능해졌다.
ATS설정은 앱의 info.plist에 키를 추가해서 값을 설정하지만 이용 가능한 키는 아래 링크를 참고하기 바란다. (관련 정보 링크)
단, 주의해야할 점은 해당 문서는 iOS10이 아직은 베타이기 때문에 확정된 최종사양서가 아니기 때문에 변동이 생길 수 있습니다.
iOS10에서 새롭게 추가된 NSAllowsArbitraryLoadsInWebContent라는 키가 추가되었고 이 키 설정값을 YES로 하면 웹페이지로딩 및 AVFoundation의 Streaming media에 한해서 http통신을 허용한다.
이는 iOS9에서는 불특정 다수의 웹페이지를 표시하는 앱은 ATS를 비활성화해서 사용하게 되어 웹페이지이외의 http통신까지 허용했다. 반대로 iOS10 불특정다수의 웹컨텐츠를 표시하면서도 통신이 안전한 https연결만을 허용함에 따라 보안을 향상시킬 수 있게 된 것이다.
또한 이를 통해 ATS를 사용하지 않은 경우를 상당히 제한하여 앱스토어에 공개되는 앱의 전반적인 보안수준을 높이기 위해 2016년말 ATS를 필수조건으로 설정하게 된 것이라고 추측한다.
조건별 ATS사양을 확인하고 설정하자
ATS설정 영향을 받는 네트워크통신을 하는 NSURLSession이나 웹페이지를 표시하는 UIWebView, WKWebView등의 통신을 실행하는 클래스이다. 앱에서 독립적으로 웹페이지를 표시하는 SFSafariViewController는 ATS의 영향을 받지 않는다.
또한, iOS10에서 사용할 수 있게 된 ATS의 새로운 설정키는 NSAllowArbitraryLoadsWebContent와 기존 .ATS비활성화 설정키 NSAllowsArbitrayLoads가 동시에 존재하면 어느쪽이 활성화되는지에는 조합에 따라 틀리다.
iOS9는 기존 그대로 NSAllowsArbitraryLoads가 YES이면 http통신을 할 수 있다.
iOS10에서는 우선 NSAllowsArbitrayLoadsInWebContent가 YES인지 조건을 체크한다. NSAllowsArbitrayLoadsInWebContent가 설정되어 있지 않거나 NO인 경우 iOS9와 같다. YES로 설정되어 있는 경우 iOS10에서는 NSAllowsArbitraryLoads가 무시되고 WKWebView만 http통신을 허용한다.
이때 데이터통신을 하는 NSURLSession과 UIWebView에 대해서도 http통신이 허용되지 않는 것이 중요하다.가급적 WKWebView를 이용해야 한다는 것이다. 또한 NSExceptionDomains를 설정하면 지정된 도메인에 NSURLSession과 UIWebView에서 http통신도 가능하다.
그렇지만 현재 애플 엔지니어들도 서로 정보가 엇갈리는 것 같고 애플 내부적으로도 의견이 통일되지 않고 있지만 정식출시가 될때 정리될 가능성이 높다.
애플엔지니어와 의견을 나눈 내용을 고려해보면 지금까지 http기반 웹페이지를 이용하기 위해서는 NSAllowsArbitraryLoads를 YES로 했다면 NSAllowsArbitraryLoadsInWebContent를 추가하고 YES를 설정하고 WKWebView만 http통신을 허용하는 것을 추천한다.
UIWebView와 NSURLSession에서 블특정 다숭의 서버에 http통신을 해야만 하는 경우 그대로 NSAllowsArbitraryLoads만 YES로 설정되어 있으면 될 것 같다. 다만 앱등록시 심사에서 이유를 설명해야만 한다. UIWebView를 사용하는 경우 특별한 사유가 없다면 WKWebView로 전환하는 것을 추천한다.
'macos | ios' 카테고리의 다른 글
FlexiblePageControl Objective c (0) | 2017.11.23 |
---|---|
lipo 명령어 ios simulator, iosphone framework 라이브러리 합치기 (0) | 2017.07.13 |
ios10 push notification 세팅 (0) | 2016.10.14 |
ios 10 관련 코드 변경점및 관련정보 (0) | 2016.09.04 |
NSURLSession 간편하게 사용하기 (2) | 2016.09.04 |