2016-07-21 2 views
7

Безопасно ли с точки зрения безопасности добавить localhost в ATS NSExceptionDomains для разработки? Не очень удобно (и это легко забыть), чтобы удалить эти строки из файла Info.plist перед каждой фиксацией.Можно ли добавить localhost в App Transport Security (ATS) NSExceptionDomains?

<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>localhost</key> 
     <dict> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 

Кроме того, может Apple отказаться от приложения из-за этого?

ответ

27

Теперь вы можете сделать это для локальных адресов:

<key>NSAppTransportSecurity</key>  
<dict> 
    <key>NSAllowsLocalNetworking</key> 
    <true/> 
</dict> 

Apple, благословил этот ключ как исключение АТС - это говорит, что не будет отказываться от приложений для его использования. Больше информации здесь: https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html (поиск на странице для "local")

+0

Это то, что я хотел! Это доступно с iOS10, спасибо! – KlimczakM

+0

не работал для меня :(Возможно, я не знаю, где его написать. –

+1

@PareshThakor Может быть, как это: \t NSAppTransportSecurity \t \t \t NSAllowsLocalNetworking \t \t \t Jonny

2

Если это не требуется в производственной версии приложения, я бы установил ваши конфигурации сборки, чтобы использовать два разных файла Info.plist. В основном вы можете создать свою внутреннюю версию plist как «Internal-Info.plist» и исключить локальное исключение. Затем создайте «Info.plist» для производства, который не имеет такого исключения, что дает Apple никаких оснований для отклонения вашего приложения сейчас или в будущем.

Для настройки сборок автоматически тянуть в нужном Info.plist для типа телосложения:

  1. Выберите ваш проект от навигатора к левым
  2. Выберите цель, которую Вы хотите изменить (в «мишенями»)
  3. Нажмите кнопку «Построить настройки»
  4. поиска для «Info.plist»
  5. в разделе Тара и упаковка, вы должны увидеть установку под названием «Info.plist File». Выберите строку, затем щелкните маленький треугольник, чтобы развернуть его, чтобы вы могли иметь разные настройки для разных конфигураций сборки. Измените значение для параметра «Отладка» на «Внутренний-Info.plist»

Убедитесь, что вы скопировали «Info.plist» в новый файл под названием «Internal-Info.plist», удалите исключение из " Info.plist ", и вы должны быть хорошими.

Apple может отклонить вас сейчас (только Apple будет знать), но начиная с 2017 года Apple будет требовать действительную причину для любых исключений ATS, поэтому, если у вас нет действительного обоснования для исключения требований к ATS для локального хоста, это лучше чтобы правильно настроить его сейчас.

+0

Это заставило бы меня поддерживать два слоя ... легко забыть что-то добавить. – KlimczakM

+0

Вы можете добавить скрипт в свои настройки сборки, которые могли бы удалить исключение localhost только для релизов. Мы редко меняем Info.plist, поэтому сохранение двух копий довольно минимально. Но, с небольшим количеством скриптов, вы могли бы быть частью процесса автоматической сборки и по-прежнему иметь возможность поддерживать один Info.plist. – wottle

+0

Кроме того, вы более или менее склонны забывать удалять записи из plist каждый раз, когда вы отправляете в магазин приложений? – wottle

Смежные вопросы