본문 바로가기

Swift

get web contents in swift

외국 자료를 보는데 info.plist에서 뭔가 추가해줘야 한다기에 왜 추가해줘야 하는지 찾다가 이 글을 발견.

http://comxp.tistory.com/353 [전체 허용]


이유는 iOS9에서 기본이 https만 사용하게끔 설정되어 있어서 이 작업을 해 줘야만 http web contents를 가져올 수 있다고 한다.


좀 더 자료를 찾아보다가 다음 게시물을 발견할 수 있었다.

http://stackoverflow.com/questions/31254725/transport-security-has-blocked-a-cleartext-http/31254874#31254874 [필요한 URL만 허용]

이 글의 첫 번째 Answer와 세 번째 Answer를 참고하면 좋고, 두 번째 Answer의 댓글도 참고하자.


요점은 이것이다.

1. iOS9부터 보안이 강화되어 기본적으로 https만 사용하게끔 xcode의 info.plist가 설정되어 있다.

2. [전체 허용] 글에서 설명한 방법은 1번의 기본 설정을 무시하고 모든 http도 허용하겠다는 것이며 엄밀히 보자면 이것은 보안에 취약하다는 것을 의미한다. 즉 기능은 작동되지만 좋지 않은 방법이라는 것

3. 그래서 [필요한 URL만 허용]으로 설정을 세팅하는 것이 더 좋다는 것이다. 이 글에서 아래 그림을 볼 수 있을 것이다. 이 그림은 2번과 3번 모두에 대해 설명하고 있다.

- Silver Bullet이 2번 방법이고,

- white listing 방법이 3번 방법(더 좋은 방법)이다. 

그러나 이 그림만 참조할 경우 헷갈릴 수 있으므로 최종적으로 적용해야 하는 방법은 이 글 제일 아래를 참조하자.



내가 설정한 방법이며 위 글에서 설명하는 가장 좋은 방법은 이것이다.

1. App Transport Security Settings를 추가한다.

2. Allow Arbitrary Loads는 NO로 설정한다.

3. Exception Domains를 추가하고 그 하위에 http를 허용할 최상위 도메인을 적는다.


졸려서 더 자세한 설명은 생략!