programing

NSApp Transport Security를 info.plist 파일에 추가하려면 어떻게 해야 하나요?

powerit 2023. 4. 13. 21:12
반응형

NSApp Transport Security를 info.plist 파일에 추가하려면 어떻게 해야 하나요?

https://developer.apple.com/videos/wwdc/2015/?id=711 @5:55

이것을 제 정보 목록에 추가할 수 없을 것 같습니다.그것은 가치가 없다.XCode 버전 7.0 베타(7A121l)를 실행하고 있으며 iOS9에서 테스트 중입니다.

동영상에서 볼 수 있는 URL을 구체적으로 선언할 수 없기 때문에 안전하지 않기 때문에 "App Transport Security has blocked cleartext HTTP (http://)" 리소스 로드가 계속 표시됩니다.임시 예외는 앱의 Info.plist 파일" 오류를 통해 구성할 수 있습니다.

하지만 설정할 수 없을 것 같습니다.좋은 생각 있어요?

Xcode-beta 4 7.0에서 이 ---를 사용해 보세요.

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>yourdomain.com</key>
        <dict>
            <!--Include to allow subdomains-->
            <key>NSIncludesSubdomains</key>
            <true/>
            <!--Include to allow HTTP requests-->
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <!--Include to specify minimum TLS version-->
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

또, ATS 를 디세블로 하는 경우는, 다음의 옵션을 사용할 수 있습니다.

<key>NSAppTransportSecurity</key>  
 <dict>  
      <key>NSAllowsArbitraryLoads</key><true/>  
 </dict>

하지만 이것은 전혀 권장되지 않습니다.서버에 SSL 증명서가 있어 프라이버시 누설이 발생하지 않도록 해야 합니다.

info.plist 파일의 NSAppTransportSecurity 딕셔너리에서 NSAlowsArbitLoads 키만 YES에 추가해야 합니다.

예를들면,

 <key>NSAppTransportSecurity</key>
 <dict>
      <key>NSAllowsArbitraryLoads</key>
     <true/>
 </dict>

여기에 이미지 설명 입력

나한테는 안 먹혔지만, 이건 성공했어.

<key>NSAppTransportSecurity</key>  
     <dict>  
          <key>NSAllowsArbitraryLoads</key><true/>  
     </dict>  

확실히 해두자면...항상 https를 사용해야 합니다.

단, 예외를 추가하여 우회할 수 있습니다.

여기에 이미지 설명 입력

Xcode 8.2, iOS 10

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

답변 업데이트(wwdc 2016 이후):

IOS apps will require secure HTTPS connections by the end of 2016

App Transport Security(ATS)는 애플이 iOS 9에서 도입한 기능입니다.ATS를 사용하도록 설정하면 앱이 비보안 HTTP가 아닌 HTTPS 연결을 통해 웹 서비스에 강제로 연결됩니다.

그러나 개발자는 여전히 ATS를 끄고 위의 답변에서 언급한 바와 같이 앱이 HTTP 연결을 통해 데이터를 전송하도록 허용할 수 있습니다.2016년 말, 애플은 앱스토어에 앱을 제출하고자 하는 모든 개발자들에게 ATS를 의무화할 것이다.링크

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>com</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>net</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
        <key>org</key>
        <dict>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

그러면 .com .net .org에 접속할 수 있습니다.

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>uservoice.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>

mac shell 명령줄에서 다음 명령을 사용합니다.

plutil -insert NSAppTransportSecurity -xml "<array><string> hidden </string></array>" [location of your xcode project]/Info.plist 

이 명령어는 필요한 모든 값을 plist 파일에 추가합니다.

원하는 에디터를 사용하여 프로젝트의 info.plist 파일을 열고 마지막 파일 앞에 이 코드를 추가합니다.

<key>NSAppTransportSecurity</key>
<dict>
   <key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

ParaSara의 답변에 대해 조금 더 설명하자면, App Transport 보안이 필수화되며, 이를 해제하려고 하면 앱이 거부될 수 있습니다.

개발자는 네트워크 코드가 App Transport 보안과 함께 작동하지 않는 경우 App Transport 보안을 해제할 수 있으며 문제를 해결하기 전에 다른 개발을 계속할 수 있습니다.예를 들어, 5인 1조로 4명이 다른 작업을 계속할 수 있으며, 1명이 모든 문제를 해결할 수 있습니다.네트워킹 문제가 있고 App Transport 보안에 의해 발생하는지 여부를 확인하려는 경우 App Transport 보안을 디버깅 도구로 해제할 수도 있습니다.아는 즉시 다시 켜야 합니다.

향후 https를 지원하지 않는 서드파티 서버를 사용하지 않는 한 http를 전혀 사용하지 않는 솔루션을 사용해야 합니다.사용하고 있는 서버가 https를 서포트하고 있지 않은 경우, Apple은 이것에 대해 문제를 안고 있습니다.서드파티 서버를 사용하더라도 애플이 이를 받아들일 것이라고는 생각하지 않습니다.

서버 보안에 대한 다양한 검사와 동일합니다.어느 시점에서는, Apple은 정당한 예외만을 인정합니다.

하지만 대부분 이 점을 고려해야 합니다.고객님의 사생활을 위협하고 있습니다.내 생각에 그건 절대 안 돼그러지마세요.코드를 수정하십시오. 안전하지 않은 코드를 실행할 수 있는 권한을 요청하지 마십시오.

NSAppTransportSecurity를 사용하는 개발자에게 나쁜 소식이 하나 있습니다.

UPDATE:
[Apple will require HTTPS connections for iOS apps by the end of 2016]

https://techcrunch.com/2016/06/14/apple-will-require-https-connections-for-ios-apps-by-the-end-of-2016/

XCODE 8, Swift 3: 행을 추가해야 합니다.**

"앱 전송 보안 설정"

** info . plist inside 정보 속성 목록으로 이동합니다.

언급URL : https://stackoverflow.com/questions/31216758/how-can-i-add-nsapptransportsecurity-to-my-info-plist-file

반응형