xcode는 보안상 문제로 https가 아니면 네트워크를 막아버리는데요
공공데이터의 경우 거의 http로 제공되고 있어요
유명하고 찾는 사람이 많은 경우에는 https도 있지만, 서울시 지하철 api가 http인걸 보면...
ATS는 iOS 9에서 도입된 보안 기능이고
앱-서버 간의 네트워크 연결을 보호해줘요
기본적으로 암호화되지 않은 http연결은 차단하고 https 연결만 허용합니다
원활한 사용을 위해서는 프로젝트에서 직접 ATS(App Transport Security)제한을 풀어주어야 합니다!
🩵 전체 http 접근 허용하기
Info.plist에 들어가셔서
App Transport Security Settings
- Allow Arbitrary Loads
설정을 true(YES) 로 해주시면 http 제한 해제 완료입니다ㅎㅎ
다만 이 방식으로 하면 온갖 주소를 다 허용하는 것이기 때문에 보안이 많이 취약해진다고 해요!
원하는 지정 주소만 허용하는 방법도 있습니다
🩵 원하는 도메인 http 연결만 허용하기
Info.plist 에서 설정하는 건 똑같습니다!
이번에는 코드로 해볼게요
파일 우클릭 > Open As > Source Code 이렇게 코드 파일로 열 수 있어요
적당히 중간에 요런 코드를 넣어주세요
<!-- Allow cleartext HTTP loads -->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
- NSIncludesSubdomains
- 하위 도메인을 포함할지 여부를 결정
- true로 설정하면 지정된 도메인과 모든 하위 도메인이 포함됨
- NSExceptionAllowsInsecureHTTPLoads
- 보안이 취약한 HTTP 로드를 허용할지 여부를 결정
- true로 설정하면 HTTP 요청이 허용됨.
- 보안상의 이유로 기본적으로는 HTTPS를 사용하는 것을 권장함
- NSExceptionRequiresForwardSecrecy
- Forward Secrecy를 필요로 하는지 여부를 결정
- Forward Secrecy는 세션 키를 생성하는 암호화 프로토콜의 특성 / 중간자 공격으로부터 보호하기 위해 필요함
- true를 권장함
이런 속성들입니다!
지정된 도메인의 http 접속을 허용해주는 부분이에요
보안상 문제가 있을 수 있으니까 개발할 때만 사용하거나 적당히 걸러서 쓰는게 좋겠죠?
https://developer.apple.com/documentation/bundleresources/information_property_list
'iOS > Swift' 카테고리의 다른 글
[Swift] 프레임워크와 라이브러리 (1) (0) | 2024.02.26 |
---|---|
[Swift] iOS 커스텀 프레임워크 생성하고 사용하기 (0) | 2024.02.23 |
[Swift] API KEY 숨기기 - plist 사용하기 (0) | 2024.02.20 |
[Swift] 위치 정보 접근 권한 (GPS) 요청하고 처리하기 (1) | 2024.02.14 |
[Swift] iOS 스플래시 / 런치 스크린 화면 만들기 (0) | 2024.02.13 |