응용 프로그램 내에서 웹 콘텐츠 표시
iOS에서는 웹 보기를 사용하여 앱의 컨텍스트를 벗어나지 않고도 다양한 웹 콘텐츠를 표시할 수 있습니다. 일부 애플리케이션에서는 여러 플랫폼에서 기능과 UI를 공유하는 방법으로 웹 보기를 사용할 수도 있습니다.
웹 보기는 앱 내에 존재하기 때문에 잠재적인 데이터 누출에 노출됩니다. 사용자가 앱 내에서 임의의 외부 웹 페이지를 탐색할 수 있는 경우(의도적인 앱 디자인 또는 렌더링된 웹 페이지의 html 콘텐츠에 노출된 링크를 통한 영리한 조작을 통해) 사용자는 앱에서 관리되는 데이터를 유출할 수 있습니다.
Intune MAM SDK는 관리 콘텐츠와 관리되지 않는 콘텐츠가 모두 앱 내의 웹 보기를 통해 표시되는 다양한 시나리오를 처리하기 위한 여러 API를 제공합니다. 이러한 API는 관리되는 사용자가 앱에 로그인한 경우에만 호출해야 합니다. 어떤 API가 어떤 시나리오에 적용되는지에 대한 빠른 지침으로 아래 표를 참조하세요.
| 시나리오 | API |
|---|---|
| 임의 웹 페이지의 위험이 없는 사용자 및 조직 콘텐츠만 | API 필요 없음 |
| 비 사용자 및 비 조직 콘텐츠만 포함 |
TreatAllWebViewsAsUnmanaged 설정하기Info.plist |
| 사용자/조직 및 비사용자/비조직 콘텐츠의 혼합(대다수가 비사용자/비조직) |
TreatAllWebViewsAsUnmanaged
Info.plist 사용자 또는 조직 데이터가 포함된 웹 보기에서 설정 및 사용 setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity |
| 사용자/조직 및 비사용자/비조직 콘텐츠의 혼합(다수 사용자/조직) | 사용자 또는 조직 데이터가 포함되지 않은 웹 보기에서만 사용 setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged |
| 사용자 또는 조직 콘텐츠이지만 임의 웹 페이지의 위험이 있음 | 및 setWebViewPolicy:forWebViewer:의 적절한 사용 TreatAllWebViewsAsUnmanaged 에 따라 임의의 웹 페이지로 이동할 수 있는 웹 보기에 대해서도 IntuneMAMWebViewPolicyDelegate 구현합니다. |
웹 보기 시나리오 1: 사용자 또는 조직의 콘텐츠를 표시하는 웹 페이지만 표시
앱이 사용자 또는 조직 콘텐츠를 렌더링하는 방법으로만 웹 보기를 사용하고 웹 보기가 임의의 외부 웹 페이지로 이동할 위험이 없는 경우 API 또는 설정을 사용할 필요가 없습니다. 기본적으로 SDK는 앱 내에 표시되는 모든 웹 보기를 현재 UI 정책 ID에 속하는 콘텐츠로 처리합니다.
관리되는 사용자가 앱 내에서 웹 보기를 열면 웹 보기의 모든 잘라내기/복사 데이터가 관리되는 콘텐츠로 처리됩니다. 웹 보기에 붙여넣기는 관리 계정의 정책에 따라 처리됩니다.
관리되지 않는 사용자가 앱 내에서 웹 보기를 여는 경우 웹 보기의 모든 잘라내기/복사 데이터는 관리되지 않는 콘텐츠로 처리됩니다. 웹 보기에 붙여넣기는 관리되지 않는 계정에서 수행한 것처럼 처리되며 추가 제한이 적용되지 않습니다.
웹 보기 시나리오 2: 사용자 또는 조직의 콘텐츠를 표시하지 않는 웹 페이지만
앱에서 웹 보기 TreatAllWebViewsAsUnmanagedYES 내에 사용자 또는 조직 콘텐츠를 절대 표시하지 않는다는 것을 알고 있는 경우 앱의 Info.plist. 이렇게 하면 웹 보기 내에서 사용자가 수행하는 모든 잘라내기, 복사 및 붙여넣기 작업이 관리되지 않는 것으로 처리됩니다. 작업을 수행하는 데 사용된 계정의 관리 상태에 관계없이 작업은 관리되지 않는 사용자가 수행한 것처럼 처리됩니다.
이렇게 하면 관리되는 앱 콘텐츠가 웹 보기를 통해 앱 외부로 누출되지 않습니다. 앱이 웹 보기만 사용하여 개인 정보 보호 알림, EULA 또는 사용자가 볼 필요가 없는 기타 정적 페이지 콘텐츠를 표시하는 경우 이 플래그를 설정하는 것이 좋습니다.
를 설정하면 TreatAllWebViewsAsUnmanaged 웹 보기 자체가 관리되지 않는 것으로 간주되므로 웹 보기 내에 표시되는 모든 콘텐츠를 복사하여 다른 관리되지 않는 앱에 붙여넣을 수 있습니다.
웹 보기 시나리오 3: 사용자/조직 및 비사용자/비조직 콘텐츠의 혼합
더 복잡한 앱은 사용자/조직 및 비사용자/비조직 웹 보기의 조합을 사용할 수 있습니다. 앱은 웹 보기를 사용하여 개인 정보 알림을 표시할 수 있지만 웹 보기를 사용하여 사용자 콘텐츠를 표시할 수도 있습니다. 이 경우 IntuneMAMPolicyManager의 setWebViewPolicy:forWebViewer: API를 사용할 수 있습니다. 이 API를 사용하면 앱에서 개별 웹 보기를 관리되지 않는 것으로 표시하거나 개별 웹 보기에 대한 효과를 TreatAllWebViewsAsUnmanaged 실행 취소할 수 있습니다.
API는 두 개의 인수를 사용합니다. 첫 번째는 type의 IntuneMAMWebViewPolicy 열거형 값입니다. 두 번째는 자식 보기 계층 구조에 WKWebView를 포함할 수 있는 UIView 또는 UIViewController일 수 있습니다. WKWebView 자체를 두 번째 인수로 직접 전달할 수도 있습니다.
WKWebView가 두 번째 인수로 전달된 UIView 또는 UIViewController의 자식인 경우 이 API가 호출될 때 뷰 계층 내에 존재하지 않아도 됩니다. UIView 또는 UIViewController에 전달된 자식 WKWebView는 추가될 때 적절한 정책을 갖습니다.
-
IntuneMAMWebViewPolicyUnset- 모든 WKWebView의 기본 정책입니다. 웹 보기는 플래그에 따라서만 처리됩니다.TreatAllWebViewsAsUnmanaged -
IntuneMAMWebViewPolicyUnmanaged- 이 정책으로 태그가 지정된 웹 보기에서 사용자가 수행한 잘라내기/복사/붙여넣기 작업은 관리되지 않는 ID에 의해 수행되는 것처럼 처리됩니다. 이 정책은 플래그를 덮어씁니다TreatAllWebViewsAsUnmanaged. -
IntuneMAMWebViewPolicyCurrentIdentity- 이 정책으로 태그가 지정된 웹 보기에서 사용자가 수행한 잘라내기/복사/붙여넣기 작업은 현재 UI 정책 ID에 의해 수행되는 것처럼 처리됩니다. 이 정책은 플래그를 덮어씁니다TreatAllWebViewsAsUnmanaged.
대다수의 비사용자 및 비조직 데이터
앱 내 대부분의 웹 보기가 관리되지 않는 콘텐츠를 TreatAllWebViewsAsUnmanaged 표시하는 경우 앱에서 Info.plistsetWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity 설정할 수 있으며 사용자 또는 조직 콘텐츠 웹 보기에서 호출할 수 있습니다.
대다수 사용자 및 조직 데이터
앱 내 대부분의 웹 보기가 사용자 또는 조직 콘텐츠를 표시하는 경우 모든 웹 보기가 기본적으로 관리되는 것으로 처리되므로 관리되지 않는 웹 보기에서만 with를 setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged 호출해야 합니다.
웹 보기 시나리오 4: 사용자 또는 조직 콘텐츠이지만 임의의 웹 페이지의 위험이 있음
웹 보기를 사용하여 사용자 또는 조직의 콘텐츠를 표시하지만 임의의 외부 URL로 이동할 위험이 있는 경우 추가 API를 및 및 setWebViewPolicy:forWebViewer:함께 TreatAllWebViewsAsUnmanaged 사용할 수 있습니다. 예를 들어 검색 엔진에 대한 직접 또는 간접 링크가 있는 제안 기능 또는 피드백 웹 페이지가 있습니다.
IntuneMAMWebViewPolicyDelegate를 setWebViewPolicyDelegate:forWebViewer:사용하여 IntuneMAMPolicyManager구현하고 웹 보기로 설정할 수 있습니다. 에는 IntuneMAMWebViewPolicyDelegate 하나의 필수 메서드가 isExternalURL:있습니다.
메서드는 setWebViewPolicyDelegate:forWebViewer: WKWebView 또는 SFSafariViewController에서 직접 호출해야 합니다.
웹 보기가 새 페이지 isExternalURL: 로 이동할 때마다 대리자 메서드가 호출됩니다. 애플리케이션은 대리자 메서드에 전달된 URL이 사용자 또는 조직 데이터를 붙여넣을 수 있는 내부 웹 사이트 또는 조직 데이터를 유출할 수 있는 외부 웹 사이트를 나타내는지 확인해야 합니다. 반환 NO 하면 로드되는 웹 사이트가 사용자 또는 조직 데이터를 공유할 수 있는 조직 위치임을 SDK에 알립니다. 반환하면 YES 현재 정책 설정에 필요한 경우 SDK가 WKWebView 또는 SFSafariViewController가 아닌 Microsoft Edge에서 URL을 엽니다. 이렇게 하면 앱 내의 사용자 또는 조직 데이터가 외부 웹 사이트로 유출될 수 없습니다.
웹 보기 API 예제
앱은 다섯 가지 웹 보기(A, B, C, D, E)로 빌드됩니다. 웹 보기 A, B 및 C에는 사용자 또는 조직 데이터가 표시되지 않습니다. 웹 보기 D는 회사의 모든 사용자가 사용할 수 있는 organization 페이지를 표시합니다. 웹 보기 E는 링크를 포함할 수 있는 사용자의 문서를 렌더링합니다.
대부분의 웹 보기가 관리되지 않으므로(A, B, C) 호출해야 하는 setWebViewPolicy:forWebViewer:횟수를 줄이도록 설정할 TreatAllWebViewsAsUnmanaged 수 있습니다.
웹 보기 D와 E는 사용자 콘텐츠를 표시하고 모든 웹 보기는 기본적으로 관리되지 않으므로 이제 를 사용하여 IntuneMAMWebViewPolicyCurrentIdentity태그를 지정 setWebViewPolicy:forWebViewer: 해야 합니다.
웹 보기 E에는 사용자가 클릭할 수 있고 임의의 URL로 이동하는 데 사용할 수 있는 링크가 포함되어 있으므로 다음을 사용하여 setWebViewPolicyDelegate:forWebViewer:구현하고 웹 보기 E로 설정해야 IntuneMAMWebViewPolicyDelegate 합니다. 구현에서는 isExternalURL: 들어오는 URL을 검사하여 문서의 URL과 동일한지 확인할 수 있습니다. 일치하지 않는 경우 외부 URL임을 알고 반환할 수 있습니다 YES. 일치하는 경우 내부 URL임을 알고 반환할 수 있습니다 NO.
이러한 API를 구현하고 호출한다는 것은 관리되는 사용자 또는 조직 콘텐츠가 웹 보기 A, B 및 C로 누출될 수 없음을 의미합니다. 또한 사용자가 문서 내의 링크를 클릭하여 E에서 탐색할 수 있는 외부 URL에 관리되는 콘텐츠가 누출될 수 없음을 의미합니다. 또한 웹 보기의 데이터가 D 및 E가 앱 외부로 누출되는 것을 방지하여 관리되는 콘텐츠가 보호됩니다.