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 и т. Д.)?

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

NSAppTransportSecurity  NSAllowsArbitraryLoads   

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

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

 NSAppTransportSecurity  NSAllowsArbitraryLoads   

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

Как говорит Apple : введите описание изображения здесьвведите описание изображения здесь

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

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

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

 NSAppTransportSecurity  NSExceptionDomains  yourserver.com   NSIncludesSubdomains   NSTemporaryExceptionAllowsInsecureHTTPLoads   NSTemporaryExceptionMinimumTLSVersion TLSv1.1    

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

 NSAppTransportSecurity   NSAllowsArbitraryLoads   

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

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

Вот демонстрация (Demo1)

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

  • Как заставить UIMenuController работать для пользовательского представления?
  • Команда рекурсивного вызова Windows
  • В чем заключается использование - ?
  • Как получить центр большого пальца изображения UISlider
  • Как вызвать Objective-C из Javascript?
  • Работает NSTimer на фоне работы
  • Как использовать UIPageControl для создания нескольких видов?
  • Изменение поведения прокрутки по умолчанию в заголовке раздела UITableView
  • Как установить интервал повторения локального уведомления на пользовательский интервал времени?
  • Способ постоянно активировать UIButton во время ситуации с нажатием и удержанием?
  • Как добавить фоновое изображение на панель навигации iphone?
  • Давайте будем гением компьютера.