SwiftUI프로젝트를 생성하였을 때 info.plist 파일이 있는데 안보여서 작성하게 되었다
SwiftUI프로젝트는 Xcode13에서 생성하면 info.plist파일이 없는 것을 볼 수 있는데
Project Navigator에 추가하도록해보자
근데 왜 Info.plist 파일이 왜 없어졌을까는
Xcode13 Release Note에서 찾아볼 수 있다
만약 Info.plist 변경되었을 때 추가되면 그 때 변경한 내용에 대해서만 정보를 보여주는데 이걸 전체 보여주고 싶다면 ?
ATS(App Transport Security Settings)
서버와 통신할때 HTTP로 통신을 하면 전송 보안 이슈때문에 연결이 되지 않습니다!
이것을 ATS가 관여
앱이 네트워크를 통해 안전하게 데이터를 전송할 수 있도록 하기 위해 사용되고 특정 상황에서는 ATS설정을 조정하거나 예외를 적용할 필요
즉, 애플 플랫폼에서 ATS라는 네트워킹 기능은 모든 앱과 앱 확장 프로그램에 대해 개인 정보 보호와 데이터 무결성을 향상시켜줍니다.
쉽게 말해보면 애플의 네트워크 보안 기능이라고 볼 수 있습니다 🔒
ATS에는 URLSession 클래스를 사용하는 모든 URL 로딩 시스템에서는 모든 HTTP연결 대신 SSL 보안 계층이 추가된 HTTPS를 사용해야 합니다
NSAllowsArbitraryLoads는 모든 네트워크 연결에 대해 ATS의 활성화 여부를 나타내고 Bool 값으로 기본값은 NO이다. YES로 할당한 경우 모든 도메인에 대해서 ATS를 적용하지 않고 NSExceptionDomains에서 추가한 도메인은 예외
그래고 만약 YES로 할당한 경우 App Store에서 정당한 이유를 제공해야하고 YES로 값을 하당하면 앱의 보안을 크게 저하하기 때문에 서버를 업그레이드하거나(HTTPS) 또는 예외 도메인 지정과 같은 더 좁은 범위의 예외를 사용하는것을 권장하고 있음
만약 ATS가 연결을 막아버린다면 콘솔에 ATS가 막았으니 HTTP로는 연결할 수 없고 사용하고 싶다면 info.plist 파일에 등록해야한다고 알려줍니다
HTTP로 서버 통신을 해야할 수도 있고 웹뷰로 띄우더라도 HTTP페이지가 있을 수 있는데 서버를 수정하는것이 가장 적합하긴 하지만 우리 iOS에서도 예외 처리를 허용하는 방법을 설정해야합니다
예외처리는 보안을 저하시킬 수 있기 때문에 최후 수단으로 사용해야하고 ATS기능을 전체적으로 비활성화 하던가 아니면 특정한 것에 대해서 예외처리를 하는 작업을 해야합니다
특정 도메인 ATS 기능을 비활성화 하고 단일 도메인으로만 제한하는 기능입니다
보안 서버는 X.509 디지털 인증서를 사용하여 ID를 설정하게 되는데
연결 클라이언트는 이 인증서를 검사하여 기본 서버 신뢰 평가를 수행하는데, 여기에는 인증서가 다음을 확인하는 것이 포함됩니다
- 인증서가 변조되지 않았음을 보여주는 온전한 디지털 서명 존재해야함
- 만료되지 않아야함
- 서버의 DNS 이름과 일치하는 이름이 있어야함
-다른 유요한 인증서로 서명되고, 다시 다른 인증서로 서명되며, 인증기관(CA)에서 발급해야 하는 신뢰할 수 있는 앵커 인증서로다시 서명됩니다. 앵커 인증서는 iOS에서 사용 가능한 신뢰할 수 있는 루트 인증서 목록에 표시된 대로 클라이언트 운영체제의 일부이거나 사용자 또는 시스템 관리자가 클라이언트에 설치해야함
다음으로 ATS는 다음 사항을 모두 요구하며 확장된 보안 검사를 진행합니다.
- 서버 인증서는 최소 2048bit의 RSA 키 또는 최소 256bit의 ECC키로 서명되어야함
- 인증서는 다이제스트 길이가 최소 256bit(SHA-256 이상)인 SHA-2를 사용해야함
- 연결은 TLS 프로토콜 버전 1.2 이상을 사용해야함
- 데이터는 AES-128 또는 AES-256 대칭 암호를 사용하여 교환되어야함
- 링크는 ECDHE 키 교환을 통해 PFS를 지원해야함
그래서 이러한 이유들로 앱스토어에 심사 제출 시 앱이 기본적으로 보안 연결을 설정할 수 없는 이유를 확인할 수 있도록 꼭 소명하는것은 필수 입니다 :)
하지만 예외를 최대한 쓰지 않는게 좋다고 합니다
'SwiftUI' 카테고리의 다른 글
SwiftUI | Final Project _ 3일차 (1) | 2024.09.24 |
---|---|
SwiftUI | HeaderView(Sticky View)만들기전 알아야할 기본 상식 정의 + 만들기 - 1 (0) | 2024.09.19 |
SwiftUI | 회원가입 만들기 (0) | 2024.08.22 |
SwiftUI | SwiftData Tutorials - List / NavigationStack / DatePicker (0) | 2024.08.08 |
SwiftUI | 다양한 정렬 및 레이아웃(HStack / VStack / ZStack) (0) | 2024.08.07 |