ATS (App Transport Security)
앱과 웹 서비스 사이에 통신 시 보안 향상을 위한 기능으로
iOS 9부터 도입된 보안 기능이다.
ATS가 나타나게 된 등장 배경은 다음과 같다.
다양한 종류의 앱이 개인의 여러 가지 정보를 다루게 되면서
사용자 정보보호에 대한 중요성이 한층 부각되었고,
기존의 보안 / 암호 기술은 오래되었지만 컴퓨터 성능이
발전함에 따라 새롭게 등장하는 네트워크 공격이 강력해지자
이에 대응하기 위하여 ATS를 도입하게 되었다.
iOS에서는 URLSession, CFURL 그리고 NSURLConnection API를 이용해서
데이터를 주고받을 때 ATS 기능을 기본적으로 사용하게 된다.
HTTP / HTTPS
HTTP와 HTTPS는 간단하게 살펴보자면,
HTTP는 암호화 되지 않은 평문으로 데이터를 전송한다.
암호화 되지 않았기 때문에!
패킷을 훔쳐보는 스니핑(Sniffing) 공격에 취약할 수 밖에 없다.
이러한 문제를 방지하기 위해서,
패킷을 암호화 한 뒤에 전송해야 한다.
그것이 바로 HTTPS이고 HTTP에 S가 붙었는데
이 S는 당연하게도 Secure의 약자이다. 😇
쉽게 요약하자면,
HTTP 통신에서 보안을 추가한 것이 HTTPS.
내가 겪은 HTTP 관련 오류 예시
나는 imageURL을 가져오기 위한 API 통신을 했는데
다음과 같은 오류 메세지가 발생하였다.
App Transport Securit has blocked...HTTP connection...insecure.
Use HTTPS instead or add this to Exception Domains in your Info.plist.
문장을 완전히 해석은 못했지만 😇😇
HTTP 연결이 안전하지 않으므로 HTTPS를 사용하던지,
Exception Domain을 사용하라는 메세지 같다.
이는 위에서 설명한 바와 같이,
iOS 9부터는 네트워크 보안 정책상, 보안에 취약한
네트워크는 차단시키고 있다.
HTTP는 암호화 되지 않은 텍스트이므로, 권한이 없는 당사자가
인터넷을 통해 쉽게 엑세스를 할 수 있기 때문에
보안에 취약하다는 단점을 가지고 있다.
따라서! 모든 데이터를 암호화된 형태로 전송하는 HTTPS를 사용하거나
Exception Domain을 Info.plist에 추가해줘야 한다.
하지만 나는 가져온 HTTP에 해당되는 URL을 그대로 사용해야 하므로
물론, 보안에 취약하다는 리스크를 감수하면서..
후자의 방법을 골랐다.
Exception Domain을 Info.plist에 추가
Info.plist에 들어가서
Informaion Property List에서
App Transport Security Settings를 추가해준다.
그리고 해당 항목에서 Allow Arbitary Loads라는 항목을 또 추가하여
초기값인 No를 Yes로 변경하면 된다!
그러면 오류 메세지가 사라진 것을 확인할 수 있다. 😃
'iOS' 카테고리의 다른 글
앱 스토어에 올린 앱 업데이트 하기 (0) | 2023.06.12 |
---|---|
DispatchQueue에 대하여 (1) | 2023.06.09 |
JSON 파일을 직접 만들고 가져오는 방법? (0) | 2023.05.10 |
nil 병합 연산자(nil coalescing operator)란? (0) | 2023.04.28 |
Code로 CollectionView를 만드는 방법 (Storyboard X) (0) | 2023.04.21 |