Подтвердить что ты не робот

IOS9 ATS: как насчет приложений на базе HTML5?

Согласно документации из https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW14, Apple вынуждает использовать HTTPS через HTTP в iOS 9.

Безопасность транспорта приложений

App Transport Security (ATS) позволяет приложению добавлять объявление в свой файл Info.plist, который указывает домены, которым необходима безопасная связь. ATS предотвращает случайное раскрытие информации, обеспечивает безопасное поведение по умолчанию и легко адаптируется. Вы должны принять ATS как можно скорее, независимо от того, создаете ли вы новое приложение или обновляете существующий.

Если вы разрабатываете новое приложение, вы должны использовать исключительно HTTPS. Если у вас есть существующее приложение, вы должны использовать HTTPS столько, сколько вы можете прямо сейчас, и создать план для переноса остальной части вашего приложения как можно скорее.

Что это значит для веб-приложений, особенно. Sencha Touch и Cordova/PhoneGap основаны? Мое веб-приложение может быть настроено на любой серверный адрес, поэтому я не могу их перечислить в файл plist. Будет ли это применимо только для приложений, которые используют собственные запросы (через NSURLRequest и т.д.)?

4b9b3361

Ответ 1

Если вы не уверены в том, какой URL-адрес будет подключен к вашему приложению или если вы подключаетесь ко многим URL-адресам, вы можете обойти ATS (безопасность транспорта приложений), добавив следующие ключи в файл info.plist.

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

Ответ 2

Попробуйте следующее: cordova plugin add https://github.com/robertklein/cordova-ios-security.git

В процессе сборки будет добавлена ​​следующая часть файла *-Info.plist:

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

Ответ 3

Как работать с SSL в iOS9, одним из решений является:  

Как Apple говорят:   enter image description here enter image description here

enter image description here

iOS 9 и OSX 10.11 требуют TLSv1.2 SSL для всех хостов, на которых вы планируете запрашивать данные, если только вы не укажете домены исключений в вашем файле Info.plist приложения.

Синтаксис конфигурации Info.plist выглядит следующим образом:

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

Если вашему приложению (например, стороннему веб-браузеру) требуется подключиться к произвольным хостам, вы можете настроить его следующим образом:

<key>NSAppTransportSecurity</key>
<dict>
    <!--Connect to anything (this is probably BAD)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Если вам нужно это сделать, лучше всего обновить свои серверы для использования TLSv1.2 и SSL, если они этого еще не сделали. Это следует рассматривать как временное решение.

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

Вот демон Demo (Demo1)

Ответ 4

Apple на самом деле ничего не принуждает, у них просто есть инфраструктура для настройки по умолчанию и, тем самым, повышает безопасность в интересах приложения и пользователей его услуг. Это означает, что до тех пор, пока гибридный инструмент не интегрирует детали в существующие продукты, необходимо внести соответствующие изменения в файлы конфигурации с некоторым пониманием деталей (см. Связанный ответ + комментарий ниже). Проведя время с этой точной проблемой, я предлагаю сначала разрабатывать локально, разрешая произвольные нагрузки и обходя ATS. Если ATS требуется для одобрения магазина приложений, как только вы готовы начать тестирование с более широкой группой пользователей, включите ATS (и произвольные нагрузки), затем настройте исключения по умолчанию по необходимости. Основной вопрос, который необходимо задать для каждого домена, заключается в том, разрешать ли поддомены, настраивать версии TLS по мере необходимости, а также разрешать ли небезопасные http. Мое приложение имеет около 20 доменов с целью передачи других запросов другим приложениям. Если бы это был веб-браузер, у меня были бы определенные настройки для моих сервисов (которые я контролирую и знаю) и позволяю остальным быть произвольными.