Как добавить NSAppTransportSecurity в файл info.plist?

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

Кажется, я не могу добавить это в свой info.plist. Это не имеет значения. Я запускаю бета-версию XCode версии 7.0 (7A121l) и тестирование на iOS9.

Поскольку я не могу специально объявить, какой URL-адрес я хочу видеть в видео, я продолжаю получать "App Transport Security заблокировал загрузку ресурсов с открытым текстом HTTP (http://), так как он небезопасен. Временные исключения могут быть настроены через ваши ошибки в файле Info.plist.

Однако я, похоже, не могу его настроить. Любые идеи?

Ответы

Ответ 1

попробуйте С этим --- работал у меня в 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-сертификаты и не допускать утечки конфиденциальной информации.

Ответ 2

Вы должны добавить только ключ NSAllowsArbitraryLoads в YES в словаре NSAppTransportSecurity в файле info.plist.

Например,

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

введите описание изображения здесь

Ответ 3

Это не работало для меня, но это сделало трюк:

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

Ответ 4

Просто уточнить... Вы всегда должны использовать httpS

Но вы можете обойти это, добавив исключение:

введите описание изображения здесь

Ответ 5

Xcode 8.2, iOS 10

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

Ответ 6

Обновить ответ (после wwdc 2016):

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

App Transport Security или ATS - это функция, которую Apple представила в iOS 9. Когда включена служба ATS, она заставляет приложение подключаться к веб-службам через соединение HTTPS, а не небезопасный HTTP.

Однако разработчики все еще могут отключить ATS и разрешить своим приложениям отправлять данные по HTTP-соединению, как указано в приведенных выше ответах. В конце 2016 года Apple сделает ATS обязательным для всех разработчиков, которые надеются представить свои приложения в App Store. ссылка

Ответ 7

<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

Ответ 9

Чтобы немного объяснить ParaSara, ответ: безопасность приложения Transport станет обязательной, и попытка отключить ее может привести к отклонению вашего приложения.

Как разработчик вы можете отключить безопасность транспорта приложений, если ваш сетевой код не работает с ним, и вы хотите продолжить другую разработку, прежде чем исправлять любые проблемы. Скажем, в команде из пяти человек, четыре могут продолжать работать над другими вещами, в то время как каждый исправляет все проблемы. Вы также можете отключить защиту App Transport как инструмент отладки, если у вас возникли проблемы с сетью, и вы хотите проверить, вызваны ли они защитой App Transport. Как только вы узнаете, что вы должны немедленно включить его.

Решение, которое вы должны использовать в будущем, - это вовсе не использовать http, если вы не используете сторонний сервер, который не поддерживает https. Если ваш собственный сервер не поддерживает https, у Apple возникнет проблема с этим. Даже с сторонними серверами я бы не стал спорить, что Apple его принимает.

То же самое с различными проверками безопасности сервера. В какой-то момент Apple примет только оправданные исключения.

Но в основном, подумайте об этом: вы ставите под угрозу конфиденциальность своих клиентов. Это большой нет-нет в моей книге. Не делай этого. Исправьте свой код, не просите разрешения на запуск небезопасного кода.

Ответ 10

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

Ответ 11

XCODE 8, Swift 3: Вам нужно добавить строку: **

"Настройка безопасности приложения на транспорте"

** в info.plist внутри информации Список свойств.

Ответ 12

В командной строке оболочки mac используйте следующую команду:

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

Команда добавит все необходимые значения в ваш файл plist.