Поделиться через


Функции безопасности и конфиденциальности iOS

В этой статье рассматривается работа с безопасностью и конфиденциальностью в iOS, а также о том, как они влияют на приложение Xamarin.iOS.

Apple сделала несколько улучшений безопасности и конфиденциальности в iOS 10 (и больше), которые помогут разработчику улучшить безопасность своих приложений и обеспечить конфиденциальность конечных пользователей. В этой статье рассматривается реализация этих функций в приложении Xamarin.iOS.

Общие улучшения

В iOS 10 были внесены следующие общие изменения в безопасность и конфиденциальность:

  • API Common Data Security Architecture (CDSA) устарел и должен быть заменен API SecKey для создания асимметричных ключей.
  • Новый NSAllowsArbitraryLoadsInWebContent ключ можно добавить в файл Info.plist приложения и позволит веб-страницам правильно загружаться в то время как защита От транспорта Apple (ATS) по-прежнему включена для остальной части приложения. Дополнительные сведения см. в документации по безопасности транспорта приложений.
  • Так как новый буфер обмена в iOS 10 и macOS Sierra позволяет пользователю копировать и вставлять данные между устройствами, API был развернут, чтобы разрешить буфер обмена ограничиваться определенным устройством и автоматически очищать метку времени в заданной точке. Кроме того, именованные вставки больше не сохраняются и должны быть заменены общими контейнерами вставки.
  • Для всех подключений SSL/TLS симметричный шифр RC4 теперь отключен по умолчанию. Кроме того, API безопасного транспорта больше не поддерживает SSLv3, и рекомендуется прекратить использование шифрования SHA-1 и 3DES как можно скорее.

Доступ к данным частного пользователя

Приложения, работающие в iOS 10 (или более поздней версии), должны статически объявить свое намерение получить доступ к определенным функциям или сведениям о пользователе, введя один или несколько ключей конфиденциальности в своих файлах Info.plist , которые объясняют пользователю, почему приложение хочет получить доступ.

Внимание

Приложения, которые не предоставляют необходимые ключи, будут автоматически завершены системой при попытке получить доступ к одной из ограниченных функций или сведений о пользователе без ошибок! Если приложение начинается неожиданно сбоем в iOS 10, убедитесь, что заданы все необходимые info.plist .

Доступны следующие ключи конфиденциальности:

  • Конфиденциальность — Описание использования Apple Music (NSAppleMusicUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к библиотеке мультимедиа пользователя.
  • Конфиденциальность — Описание использования периферийных устройств Bluetooth (NSBluetoothPeripheralUsageDescription) — позволяет разработчику описать, почему приложение хочет получить доступ к Bluetooth на устройстве пользователя.
  • Конфиденциальность — описание использования календарей (NSCalendarsUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к календарю пользователя.
  • Конфиденциальность — Камера описание использования (NSCameraUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к камере устройства.
  • Конфиденциальность — описание использования контактов (NSContactsUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к контактам пользователя.
  • Конфиденциальность — описание использования общей папки работоспособности (NSHealthShareUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к данным о работоспособности пользователя. Дополнительные сведения см. в справочнике по классу HKHealthStore в Apple.
  • Конфиденциальность — описание использования обновления работоспособности (NSHealthUpdateUsageDescription) позволяет разработчику описать, почему приложение хочет изменить данные о работоспособности пользователя. Дополнительные сведения см. в справочнике по классу HKHealthStore в Apple.
  • Конфиденциальность — описание использования HomeKit (NSHomeKitUsageDescription) — позволяет разработчику описать, почему приложение хочет получить доступ к данным конфигурации HomeKit пользователя.
  • Конфиденциальность — описание always Usage (NSLocationAlwaysUsageDescription) — позволяет разработчику описать, почему приложение должно всегда иметь доступ к расположению пользователя.
  • [Не рекомендуется] Конфиденциальность — описание использования расположения (NSLocationUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к расположению пользователя. ПРИМЕЧАНИЕ. Этот ключ не рекомендуется использовать в iOS 8 (и больше). Вместо этого используются типы NSLocationAlwaysUsageDescription или NSLocationWhenInUseUsageDescription.
  • Конфиденциальность — расположение при использовании описания использования (NSLocationWhenInUseUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к расположению пользователя во время его выполнения.
  • [Не рекомендуется] Конфиденциальность — описание использования библиотеки мультимедиа — позволяет разработчику описать, почему приложение хочет получить доступ к библиотеке мультимедиа пользователя. ПРИМЕЧАНИЕ. Этот ключ не рекомендуется использовать в iOS 8 (и больше). Вместо этого используйте NSAppleMusicUsageDescription.
  • Конфиденциальность — описание использования микрофона (NSMicrophoneUsageDescription) — позволяет разработчику описать, почему приложение хочет получить доступ к микрофону устройств.
  • Конфиденциальность — описание использования движения (NSMotionUsageDescription) позволяет разработчику описать, почему приложение хочет получить доступ к акселерометру устройства.
  • Конфиденциальность — описание использования библиотеки фотографий (NSPhotoLibraryUsageDescription) — позволяет разработчику описать, почему приложение хочет получить доступ к библиотеке фотографий пользователя.
  • Конфиденциальность — описание использования напоминаний (NSRemindersUsageDescription) — позволяет разработчику описать, почему приложение хочет получить доступ к напоминаниям пользователя.
  • Конфиденциальность — Описание использования Siri (NSSiriUsageDescription) — позволяет разработчику описать, почему приложение хочет отправлять данные пользователя в Siri.
  • Конфиденциальность — описание использования распознавания речи (NSSpeechRecognitionUsageDescription) позволяет разработчику описать, почему приложение хочет отправлять данные пользователей на серверы распознавания речи Apple.
  • Конфиденциальность — описание использования поставщика телевизоров (NSVideoSubscriberAccountUsageDescription) — позволяет разработчику описать, почему приложение хочет получить доступ к учетной записи поставщика телевизоров пользователя.

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

Настройка ключей конфиденциальности

Выполните следующий пример доступа к HomeKit в iOS 10 (и больше), разработчику потребуется добавить NSHomeKitUsageDescription ключ в файл Info.plist приложения и предоставить строку, указывающую, почему приложение хочет получить доступ к базе данных HomeKit пользователя. Эта строка будет представлена пользователю при первом запуске приложения:

Пример оповещения NSHomeKitUsageDescription

В настоящее время Xamarin.iOS для Visual Studio не поддерживает редактирование ключей конфиденциальности Info.plist в редакторе манифестов iOS по умолчанию. Вместо этого вам потребуется использовать универсальный редактор PList, поэтому сделайте следующее:

  1. Щелкните правой кнопкой мыши файл Info.plist в Обозреватель решений и выберите "Открыть с...".

  2. Выберите универсальный редактор PList в списке программ, чтобы открыть файл, а затем нажмите кнопку "ОК".

    Выбор редактора универсального списка PList

  3. + Нажмите кнопку на последней строке в редакторе, чтобы добавить новую запись в список. Это будет называться "Настраиваемое свойство", с заданным типом String и пустым значением.

  4. Щелкните имя свойства, и появится раскрывающийся список.

  5. В раскрывающемся списке выберите ключ конфиденциальности (например , конфиденциальность — описание использования HomeKit):

    Выбор ключа конфиденциальности

  6. Введите описание в столбец "Значение", чтобы получить доступ к данной функции или сведениям о пользователе:

    Введите описание

  7. Сохраните изменения в файле.

Внимание

В приведенном выше примере сбой установки NSHomeKitUsageDescription ключа в файле Info.plist приведет к тому, что приложение автоматически завершается ошибкой (закрывается системой во время выполнения) без ошибок при запуске в iOS 10 (или больше).

Итоги

В этой статье рассматриваются изменения безопасности и конфиденциальности, внесенные Apple в iOS 10 и как они влияют на приложение Xamarin.iOS.