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


пакет SDK для приложений Intune для iOS — функции веб-представления

Отображение веб-содержимого в приложении

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

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

Пакет SDK Intune MAM предоставляет несколько API для обработки различных сценариев, в которых управляемое и неуправляемое содержимое отображается через веб-представления в приложении. Эти API-интерфейсы необходимо вызывать только в том случае, если в приложение вошел управляемый пользователь. В таблице ниже приведено краткое руководство по использованию API, применяемого к какому сценарию.

Сценарий Интерфейсы API
Только содержимое пользователей и организаций без риска произвольных веб-страниц API-интерфейсы не требуются
Только содержимое, не относяноеся к пользователям и не из организации Задать TreatAllWebViewsAsUnmanaged в Info.plist
Сочетание содержимого пользователя/организации и содержимого, не относягося к пользователям и не из организации (большинство непользователь/не-организация) Задать TreatAllWebViewsAsUnmanaged в Info.plist и использовать setWebViewPolicy:forWebViewer: с IntuneMAMWebViewPolicyCurrentIdentity в веб-представлениях, содержащих данные пользователя или организации
Сочетание пользовательского/организационного и непользовательского и неуниционного содержимого (большинство пользователей или организаций) Использовать setWebViewPolicy:forWebViewer: только в IntuneMAMWebViewPolicyUnmanaged веб-представлениях, которые не содержат данных пользователя или организации
Содержимое пользователя или организации, но с риском произвольных веб-страниц После подходящего TreatAllWebViewsAsUnmanaged использования и setWebViewPolicy:forWebViewer:также реализуйте IntuneMAMWebViewPolicyDelegate для веб-представлений, которые могут переходить к произвольным веб-страницам.

Сценарий веб-представления 1. Только веб-страницы, на которые отображается содержимое пользователя или организации

Если приложение использует веб-представления только как способ отображения содержимого пользователя или организации и нет риска перехода веб-представления на произвольные внешние веб-страницы, то нет необходимости использовать какие-либо API или параметры. По умолчанию пакет SDK будет обрабатывать любое веб-представление, которое появится в приложении, как содержимое, принадлежащее текущему идентификатору политики пользовательского интерфейса.

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

Если неуправляемый пользователь открывает веб-представление в приложении, все вырезанные или копируемые данные из веб-представления будут рассматриваться как неуправляемое содержимое. Вставка в веб-представление будет рассматриваться так, как если бы неуправляемая учетная запись не применяла никаких дополнительных ограничений.

Сценарий веб-представления 2. Только веб-страницы, на которые не отображается содержимое пользователя или организации

Если приложение знает, что оно никогда не будет отображать содержимое пользователя или организации в веб-представлении, оно может задать значение TreatAllWebViewsAsUnmanagedYES в приложении Info.plist. При этом все действия вырезание, копирование и вставка, выполняемые любым пользователем в веб-представлении, будут рассматриваться как неуправляемые. Независимо от состояния управления учетной записи, используемой для выполнения действий, действие будет рассматриваться как действие, выполняемое неуправляемым пользователем.

Это позволит гарантировать, что содержимое управляемого приложения не будет утечки за пределы приложения через веб-представление. Установить этот флаг было бы полезно, если приложение использует веб-представления только для отображения уведомлений о конфиденциальности, EUL или другого статического содержимого страницы, которое не требуется для просмотра пользователем.

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

Сценарий веб-представления 3. Сочетание содержимого пользователя/организации и непользовательского и неуниционного содержимого

Более сложные приложения могут использовать сочетание веб-представлений пользователей/организаций и веб-представлений, не относящихся к пользователю и организации. Приложение может использовать веб-представления для отображения уведомлений о конфиденциальности, но также использовать веб-представления для отображения пользовательского содержимого. В этом случае IntuneMAMPolicyManagersetWebViewPolicy:forWebViewer: можно использовать API. Этот API позволяет приложению пометить отдельные веб-представления как неуправляемые или отменить эффект для отдельных веб-представлений TreatAllWebViewsAsUnmanaged .

API принимает два аргумента. Первый — это значение перечисления IntuneMAMWebViewPolicy типа. Вторым может быть UIView или UIViewController, который может содержать WKWebView в своей дочерней иерархии представлений. Сам WKWebView также можно передать непосредственно в качестве второго аргумента.

Если WKWebView является дочерним элементом UIView или UIViewController, переданным в качестве второго аргумента, он не должен существовать в иерархии представлений во время вызова этого API. Для всех дочерних объектов WKWebView, передаваемых в UIView или UIViewController, будет применена соответствующая политика при их добавлении.

  • IntuneMAMWebViewPolicyUnset — Это политика по умолчанию для всех WKWebViews. Веб-представления будут обрабатываться только по флагу TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyUnmanaged — Любые действия вырезание, копирование и вставка, выполняемые пользователем в веб-представлении, помеченном этой политикой, будут рассматриваться как действия, выполняемые неуправляемым удостоверением. Эта политика перезапишет TreatAllWebViewsAsUnmanaged флаг.
  • IntuneMAMWebViewPolicyCurrentIdentity — Любые действия выреза, копирования и вставки, выполняемые пользователем в веб-представлении, помеченном этой политикой, будут рассматриваться как выполненные текущим удостоверением политики пользовательского интерфейса. Эта политика перезапишет TreatAllWebViewsAsUnmanaged флаг.

Большинство данных, не являющихся пользователями и не организационными

Если в большинстве веб-представлений в приложении отображается неуправляемое содержимое, то TreatAllWebViewsAsUnmanaged его можно задать в приложении Info.plist , и setWebViewPolicy:forWebViewer: с IntuneMAMWebViewPolicyCurrentIdentity можно вызвать для пользовательских или организационных веб-представлений содержимого.

Большинство данных пользователей и организаций

Если в большинстве веб-представлений в приложении отображается содержимое пользователя или организации, то для неуправляемых веб-представлений необходимо вызывать только setWebViewPolicy:forWebViewer: с IntuneMAMWebViewPolicyUnmanaged , так как все веб-представления обрабатываются как управляемые по умолчанию.

Сценарий веб-представления 4. Содержимое пользователя или организации, но с риском произвольных веб-страниц

Если веб-представление используется для отображения содержимого пользователя или организации, но имеет риск перехода по произвольным внешним URL-адресам, то дополнительный API можно использовать в сочетании с TreatAllWebViewsAsUnmanaged и setWebViewPolicy:forWebViewer:. Примерами этого являются веб-страницы предложения функции или отзывов, которые имеют прямые или косвенные ссылки на поисковую систему.

IntuneMAMWebViewPolicyDelegateможно реализовать и задать для веб-представления с помощью IntuneMAMPolicyManagersetWebViewPolicyDelegate:forWebViewer:. Имеет один обязательный IntuneMAMWebViewPolicyDelegate метод , isExternalURL:.

Метод setWebViewPolicyDelegate:forWebViewer: должен вызываться непосредственно в WKWebView или SFSafariViewController.

При каждом переходе веб-представления на новую страницу вызывается метод делегата isExternalURL: . Приложения должны определить, представляет ли URL-адрес, переданный методу делегата, внутренний веб-сайт, на который можно вставить данные пользователя или организации, или внешний веб-сайт, который может утечки данных организации. При возврате NO пакета SDK будет указано, что загружаемый веб-сайт является расположением организации, где можно предоставлять общий доступ к данным пользователя или организации. Возврат приведет к тому, YES что пакет SDK откроет URL-адрес в управляемом браузере, а не в WKWebView или SFSafariViewController, если этого требуют текущие параметры политики. Это обеспечит утечку данных пользователя или организации из приложения на внешний веб-сайт.

Примеры API веб-представления

Приложение создается с пятью веб-представлениями (A, B, C, D и E). Веб-представления A, B и C не отображают данные пользователей или организаций. В веб-представлении D отображается страница организации, доступная всем пользователям компании. Веб-представление E отображает документы пользователя, которые могут содержать ссылки.

Так как большинство веб-представлений неуправляемы (A, B и C), мы можем задать TreatAllWebViewsAsUnmanaged для уменьшения количества вызовов setWebViewPolicy:forWebViewer:.

Так как веб-представления D и E отображают пользовательское содержимое и все веб-представления по умолчанию неуправляемы, нам нужно пометить их тегами с setWebViewPolicy:forWebViewer: помощью IntuneMAMWebViewPolicyCurrentIdentity.

Так как веб-представление E содержит ссылки, которые пользователь может щелкнуть и использовать для перехода по произвольным URL-адресам, необходимо также реализовать IntuneMAMWebViewPolicyDelegate и задать для него веб-представление E с помощью setWebViewPolicyDelegate:forWebViewer:. В нашей isExternalURL: реализации мы могли бы проверка входящие URL-адреса и проверить, совпадают ли они с URL-адресом документа. Если они не совпадают, мы знаем, что это внешний URL-адрес и может вернуть .YES Если они совпадают, мы знаем, что это внутренний URL-адрес и может вернуть .NO

Реализация и вызов этих API означает, что содержимое управляемого пользователя или организации не может утекать в веб-представления A, B и C. Это также означает, что управляемое содержимое не может утекать на внешние URL-адреса, по которым пользователь может перейти в E, щелкнув ссылки в документах. Управляемое содержимое также будет защищено путем предотвращения утечки данных из веб-представлений D и E за пределами приложения.

Поддержка SwiftUI

Только что созданное приложение SwiftUI поддерживает UIScenes, но не имеет uiSceneDelegate, реализованного по умолчанию. Если ваше приложение намерено поддерживать UIScenes и использовать пакет SDK для приложений Intune, оно требуется для реализации UISceneDelegate. Если он не планирует поддерживать UIScenes, UIApplicationSceneManifest необходимо удалить параметр (также названный "Манифест сцены приложения") в info.plist приложения.