WPF 보안 전략 - 플랫폼 보안

Windows Presentation Foundation (WPF)에서는 다양한 보안 서비스 이외에 운영 체제, CLR 및 Internet Explorer 등의 내부 플랫폼에 대한 보안 기능도 제공합니다. 이러한 여러 보안 계층을 결합하면 다음 그림과 같이 어떠한 단일 장애 지점도 발생하지 않는 강력한 심층 방어 보안 모델이 WPF에 제공됩니다.

WPF 보안 설명

이 항목의 나머지 부분에서는 특별히 WPF와 관련된 이러한 각 계층의 기능에 대해 설명합니다.

이 항목에는 다음 단원이 포함되어 있습니다.

  • 운영 체제 보안
  • 공용 언어 런타임 보안
  • Microsoft Internet Explorer 보안
  • 관련 항목

운영 체제 보안

WPF에 필요한 최소 수준의 운영 체제는 Windows XP SP2입니다. Windows XP SP2의 핵심 구성 요소에서는 모든 Windows 응용 프로그램(WPF를 사용하여 만든 해당 응용 프로그램 포함)에 대한 보안 기초를 형성하는 여러 보안 기능을 제공합니다. Windows Vista에서는 WPF의 보안 기능을 통합하고 확장합니다. 이 항목에서는 WPF에 중요한 이러한 보안 기능의 방대함과 WPF가 이러한 보안 기능과 통합하여 보다 향상된 심층 방어를 제공하는 방법에 대해 설명합니다.

Microsoft Windows XP SP2(서비스 팩 2)

이 항목에서는 Windows의 일반적인 개요 및 강점은 물론 Windows XP SP2의 세 가지 주요 기능에 대해 설명합니다.

  • /GS 컴파일

  • Microsoft Windows Update.

/GS 컴파일

Windows XP SP2에서는 버퍼 오버런을 줄이기 위해 CLR과 같은 모든 WPF 종속성을 포함하여 다양한 핵심 시스템 라이브러리를 다시 컴파일하여 보안을 제공합니다. 이러한 작업은 C/C++ 명령줄 컴파일러에 /GS 매개 변수를 사용하여 수행됩니다. 버퍼 오버런은 명시적으로 방지되어야 하지만 /GS 컴파일에서 제공하는 보안 기능은 버퍼 오버런에 의해 부주의하게 또는 악의적으로 생성된 잠재적인 취약성에 대한 심층 방어의 한 예입니다.

지금까지 버퍼 오버런으로 인해 매우 심각한 여러 보안 위험이 발생했습니다. 버퍼의 경계를 벗어나 작성되는 악의적인 코드를 삽입할 수 있는 환경을 제공하는 코드 취약성을 공격자가 이용하는 경우 버퍼 오버런이 발생합니다. 이러한 버퍼 오버런이 발생하면 공격자가 공격자의 코드가 실행될 수 있도록 함수의 반환 주소를 덮어써 원래 코드가 실행되는 프로세스를 교란시킬 수 있습니다. 이러한 공격자 동작의 결과로 생긴 악의적인 코드는 교란된 프로세스와 동일한 권한을 사용하여 임의의 코드를 실행하게 됩니다.

상위 수준에서 /GS 컴파일러 플래그는 로컬 문자열 버퍼를 포함하는 함수의 반환 주소를 보호하도록 특별 보안 쿠키를 삽입하여 잠재적인 일부 버퍼 오버런이 발생하지 않도록 합니다. 함수가 반환되면 보안 쿠키가 이전 보안 쿠키 값과 비교됩니다. 값이 변경된 경우에는 버퍼 오버런이 발생했을 수 있으므로 프로세스가 오류 조건과 함께 중지됩니다. 프로세스가 중지되면 잠재적인 악의적 코드의 실행을 방지할 수 있습니다. 자세한 내용은 /GS(버퍼 보안 검사)를 참조하십시오.

WPF는 다른 방어 계층을 WPF 응용 프로그램에 추가하기 위해 /GS 플래그를 사용하여 컴파일됩니다.

Microsoft Windows Update 향상

Windows XP SP2에서는 Microsoft Windows Update 기능도 개선하여 업데이트 다운로드 및 설치 프로세스를 단순화했습니다. 이러한 기능 변경으로 인해 특별히 보안 업데이트와 관련하여 시스템이 최신 상태를 유지할 수 있게 됨으로써 WPF 사용자의 보안이 크게 향상되었습니다.

Windows Vista

Windows Vista의 WPF 사용자는 “최소 권한 사용자 액세스”, 코드 무결성 검사 및 권한 격리 등 운영 체제의 추가적인 보안 향상 기능을 사용할 수 있습니다.

UAC(사용자 계정 컨트롤)

오늘날 여러 응용 프로그램에서는 설치 또는 실행 작업 중 하나 또는 둘 다를 수행할 때 권리자 권한이 필요하므로 Windows 사용자는 관리자 권한으로 실행하려고 합니다. 관리자 권한으로 실행할 수 있는 작업의 한 가지 예로 기본 응용 프로그램 설정을 레지스트리에 작성하는 것을 들 수 있습니다.

관리자 권한으로 실행한다는 것은 사실 관리자 권한이 부여된 프로세스에서 응용 프로그램을 실행한다는 것을 의미합니다. 따라서 관리자 권한으로 실행되는 프로세스를 교란하는 악의적인 코드가 중요한 시스템 리소스에 대한 액세스 권한을 포함하여 이러한 권한을 자동으로 상속하게 되면 보안에 큰 문제가 발생할 수 있습니다.

이러한 보안 위협으로부터 보호하는 한 가지 방법은 필요한 최소한의 권한을 사용하여 응용 프로그램을 실행하는 것입니다. 최소 권한 원칙으로 알려진 이 방법은 Windows Vista 운영 체제의 핵심 기능입니다. 이 기능은 UAC(사용자 계정 컨트롤)라고 하며 다음 두 가지 방법으로 Windows Vista UAC에서 사용됩니다.

  • 사용자가 관리자인 경우에도 기본적으로 UAC 권한으로 대부분의 응용 프로그램을 실행합니다. 관리자 권한이 필요한 응용 프로그램만 관리자 권한으로 실행됩니다. 관리자 권한으로 실행하려면 응용 프로그램은 해당 응용 프로그램 매니페스트에 명시적으로 표시되거나 보안 정책의 엔트리로 명시적으로 표시되어야 합니다.

  • 가상화와 같은 호환성 솔루션을 제공합니다. 예를 들어 많은 응용 프로그램에서 C:\Program Files와 같은 제한된 위치에 쓰려고 합니다. UAC에서 실행되는 응용 프로그램의 경우 대체 사용자별 위치가 있지만 이 위치에 쓰는 데 관리자 권한이 필요하지 않습니다. UAC에서 실행되는 응용 프로그램의 경우 UAC는 C:\Program Files를 가상화하여 응용 프로그램이 실제로는 C:\Program Files가 아닌 대체 사용자별 위치에 쓰도록 합니다. 이러한 종류의 호환성 작업을 통해 운영 체제에서는 이전에는 UAC에서 실행할 수 없었던 많은 응용 프로그램을 UAC에서 실행할 수 있게 할 수 있습니다.

코드 무결성 검사

Windows Vista에서는 하위 코드 무결성 검사를 통합하여 악의적인 코드가 로드 및 실행 시 시스템 파일 또는 커널에 삽입되지 않도록 합니다. 이는 시스템 파일 보호 이상의 기능입니다.

브라우저에서 호스팅되는 응용 프로그램의 제한된 권한 프로세스

브라우저에서 호스팅되는 WPF 응용 프로그램은 인터넷 영역 샌드박스 내에서 실행됩니다. WPF가 Microsoft Internet Explorer와 통합되어 이 보호 기능이 추가 지원과 함께 확장됩니다.

XP용 Internet Explorer 7 및 Internet Explorer 6 서비스 팩 2

WPF는 보호 기능 향상을 위해 XAML browser applications (XBAPs)에 대한 프로세스 권한을 제한하여 운영 체제 보안을 제공합니다. 브라우저에서 호스팅되는 WPF 응용 프로그램이 시작되기 전에 운영 체제에서는 프로세스 토큰에서 불필요한 권한을 제거하는 호스트 프로세스를 만듭니다. 이렇게 제거되는 권한의 예로 사용자의 컴퓨터를 종료하고 드라이버를 로드하고 컴퓨터의 모든 파일에 액세스하여 읽는 기능을 들 수 있습니다.

Vista용 Internet Explorer 7

Windows Internet Explorer 7에서 WPF 응용 프로그램은 보호 모드로 실행됩니다. 특히 XAML browser applications (XBAPs)는 보통 수준의 무결성으로 실행됩니다.

심층 방어 계층

일반적으로 인터넷 영역 권한 집합을 통해 XAML browser applications (XBAPs)를 샌드박스를 적용하므로 이러한 권한을 제거해도 호환성 측면에서 XAML browser applications (XBAPs)에 나쁜 영향을 주지 않습니다. 대신 추가 심층 방어 계층이 생성됩니다. 샌드박스가 적용된 응용 프로그램에서 다른 계층을 이용하여 프로세스를 교란할 수 있는 경우 프로세스는 계속 제한된 권한만 갖게 됩니다.

자세한 내용은 Using a Least-Privileged User Account를 참조하십시오.

공용 언어 런타임 보안

common language runtime (CLR)에서는 유효성 검사 및 확인, Code Access Security (CAS), 보안 중요 방법과 같은 여러 주요 보안 이점을 제공합니다.

유효성 검사 및 확인

CLR에서는 유효성 검사 프로세스를 사용하여 어셈블리 격리 및 무결성을 제공합니다. CLR 유효성 검사에서는 어셈블리 외부를 가리키는 주소에 대한 어셈블리의 PE(이식 가능) 파일 형식의 유효성을 검사하여 어셈블리가 격리되었는지 확인합니다. 또한 CLR 유효성 검사는 어셈블리 내에 포함된 메타데이터의 무결성에 대한 유효성을 검사합니다.

형식 안정성을 보장하고, 버퍼 오버런과 같은 일반적인 보안 문제가 발생하지 않도록 하고, 하위 프로세스 격리를 통해 샌드박싱을 사용할 수 있도록 하기 위해 CLR 보안에서는 유효성 확인 개념을 사용합니다.

관리되는 응용 프로그램은 MSIL(Microsoft Intermediate Language)로 컴파일됩니다. 관리되는 응용 프로그램의 메서드가 실행되면 해당 MSIL은 JIT(Just-In-Time) 컴파일을 통해 네이티브 코드로 컴파일됩니다. JIT 컴파일에는 많은 안정성 및 견고성 규칙을 적용하는 유효성 확인 프로세스가 있으므로 코드에서 다음 작업을 수행할 수 없습니다.

  • 형식 계약 위반

  • 버퍼 오버런 생성

  • 무분별한 메모리 액세스

유효성 검사 규칙을 따르지 않는 관리 코드는 신뢰할 수 있는 코드로 확인되지 않으면 실행되지 않습니다.

안정형 코드의 장점이야말로 .NET Framework가 WPF를 기반으로 하는 주요 원인입니다. 안정형 코드를 많이 사용하면 잠재적인 취약성을 이용할 가능성이 훨씬 적어집니다.

코드 액세스 보안

클라이언트 컴퓨터에서는 관리되는 응용 프로그램에서 액세스할 수 있는 파일 시스템, 레지스트리, 인쇄 서비스, 사용자 인터페이스, 리플렉션, 환경 변수 등의 다양한 리소스를 노출합니다. 관리되는 응용 프로그램에서 클라이언트 컴퓨터의 리소스에 액세스하려면 해당 작업에 대한 .NET Framework Code Access Security (CAS) 권한이 필요합니다. CAS의 권한은 CodeAccessPermission의 서브클래스입니다. CAS에서는 관리되는 응용 프로그램에서 액세스할 수 있는 각 리소스에 대해 하나의 서브클래스를 구현합니다.

관리되는 응용 프로그램의 실행이 시작될 때 CAS에 의해 관리되는 응용 프로그램에 부여되는 권한의 집합은 권한 집합이라고 하며 응용 프로그램에서 제공하는 증명 정보에 의해 결정됩니다. WPF 응용 프로그램의 경우 제공되는 증명 정보는 응용 프로그램이 시작되는 위치 또는 영역입니다. CAS에서는 다음 영역을 식별합니다.

  • 내 컴퓨터. 클라이언트 컴퓨터에서 시작되는 응용 프로그램입니다(완전히 신뢰할 수 있음).

  • 로컬 인트라넷. 인트라넷에서 시작되는 응용 프로그램입니다(어느 정도 신뢰할 수 있음).

  • 인터넷. 인터넷에서 시작되는 응용 프로그램입니다(조금 신뢰할 수 있음).

  • 신뢰할 수 있는 사이트. 사용자가 신뢰하는 것으로 식별되는 응용 프로그램입니다(조금 신뢰할 수 있음).

  • 신뢰할 수 없는 사이트. 사용자가 신뢰하지 않는 것으로 식별되는 응용 프로그램입니다(신뢰할 수 없음).

이러한 각 영역에 대해 CAS에서는 각 영역과 관련된 신뢰 수준과 일치하는 권한이 포함된 다음과 같은 미리 정의된 권한 집합을 제공합니다.

  • FullTrust. 내 컴퓨터 영역에서 시작되는 응용 프로그램에 해당하는 권한 집합으로, 모든 가능한 권한이 부여됩니다.

  • LocalIntranet. 로컬 인트라넷 영역에서 시작되는 응용 프로그램에 해당하는 권한 집합으로, 격리된 저장소, 무제한 UI 액세스, 무제한 파일 대화 상자, 제한된 리플렉션, 환경 변수에 대한 제한된 액세스와 같은 클라이언트 컴퓨터의 리소스에 대한 적절한 액세스 권한을 제공하도록 권한의 부분 집합이 부여됩니다. 레지스트리와 같은 중요한 리소스에 대한 권한은 제공하지 않습니다.

  • Internet. 인터넷 또는 신뢰할 수 있는 사이트 영역에서 시작되는 응용 프로그램에 해당하는 권한 집합입니다. 격리된 저장소, 파일 열기만, 제한된 UI와 같은 클라이언트 컴퓨터의 리소스에 대한 제한된 액세스 권한을 제공하도록 권한의 부분 집합이 부여됩니다. 기본적으로 이러한 권한 집합은 클라이언트 컴퓨터로부터 응용 프로그램을 격리합니다.

신뢰할 수 없는 사이트 영역에서 실행되는 것으로 식별되는 응용 프로그램에는 CAS에서 아무런 권한도 부여하지 않습니다. 따라서 해당 응용 프로그램에 대해 미리 정의된 권한 집합은 없습니다.

다음 그림에서는 영역, 권한 집합, 권한 및 리소스 간의 관계를 보여 줍니다.

CAS 권한 집합

인터넷 영역 보안 샌드박스의 제한 사항은 XBAP가 WPF를 포함하여 시스템 라이브러리에서 가져오는 모든 코드에 동일하게 적용됩니다. 따라서 WPF를 포함하여 코드의 모든 비트가 잠깁니다. 그러나 코드를 실행하기 위해서는 XBAP에서 인터넷 영역 보안 샌드박스에서 사용할 수 있는 권한보다 더 많은 권한을 필요로 하는 기능을 실행해야 합니다.

다음 페이지가 있는 XBAP 응용 프로그램을 생각해 보십시오.

            Dim fp As New FileIOPermission(PermissionState.Unrestricted)
            fp.Assert()

            ' Perform operation that uses the assert

            ' Revert the assert when operation is completed
            CodeAccessPermission.RevertAssert()
FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();

// Perform operation that uses the assert

// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();

이 XBAP를 실행하려면 내부 WPF 코드에서 다음과 같은 기능을 포함하여 XBAP 호출에 사용할 수 있는 것보다 더 많은 기능을 실행해야 합니다.

  • 렌더링을 위한 창 핸들(hWnd) 만들기

  • 메시지 디스패치

  • Tahoma 글꼴 로딩

샌드박스가 적용된 응용 프로그램에서 이러한 작업에 바로 액세스하도록 허용하면 보안상 치명적인 문제가 발생할 수 있습니다.

다행히 WPF에서는 이러한 보안 문제를 방지하기 위해 이러한 작업이 샌드박스가 적용된 응용 프로그램 대신에 상승된 권한으로 실행되도록 합니다. 모든 WPF 작업이 XBAP의 응용 프로그램 도메인에 대한 제한된 인터넷 영역 보안 권한에 대해 검사되는 반면 WPF에는 다른 시스템 라이브러리의 경우와 같이 모든 가능한 권한이 포함된 권한 집합이 부여됩니다.

이렇게 하려면 WPF에서 상승된 권한을 받을 때 이러한 권한이 호스트 응용 프로그램 도메인의 인터넷 영역 권한 집합에 의해 제어되지 않도록 해야 합니다.

WPF에서는 권한의 Assert 메서드를 사용하여 이러한 작업을 수행합니다. 다음 코드에서는 이러한 작업이 수행되는 방식을 보여 줍니다.

            Dim fp As New FileIOPermission(PermissionState.Unrestricted)
            fp.Assert()

            ' Perform operation that uses the assert

            ' Revert the assert when operation is completed
            CodeAccessPermission.RevertAssert()
FileIOPermission fp = new FileIOPermission(PermissionState.Unrestricted);
fp.Assert();

// Perform operation that uses the assert

// Revert the assert when operation is completed
CodeAccessPermission.RevertAssert();

기본적으로 Assert 메서드는 WPF에서 필요로 하는 제한되지 않은 권한이 XBAP의 인터넷 영역 권한에 의해 제한되지 않도록 합니다.

플랫폼 관점에서 볼 때 WPF가 Assert를 올바르게 사용해야 합니다. Assert를 잘못 사용하면 악의적인 코드가 권한을 상승시킬 수 있습니다. 따라서 필요할 때 Assert만 호출하고 샌드박스 제한 사항이 그대로 유지되도록 하는 것이 매우 중요합니다. 예를 들어 샌드박스가 적용된 코드는 임의의 파일을 열 수 없지만 글꼴을 사용할 수는 있습니다. WPF에서 Assert를 호출하면 샌드박스가 적용된 응용 프로그램에서 글꼴 기능을 사용할 수 있고 WPF에서는 샌드박스가 적용된 응용 프로그램 대신 이러한 글꼴이 들어 있다고 알려진 파일을 읽을 수 있습니다.

ClickOnce 배포

ClickOnce는 .NET Framework와 함께 제공되는 포괄적인 배포 기술이며 Microsoft Visual Studio와 통합됩니다. 자세한 내용은 ClickOnce 배포 개요를 참조하십시오. 독립 실행형 WPF 응용 프로그램은 ClickOnce를 사용하여 배포할 수 있지만 브라우저에서 호스팅되는 응용 프로그램은 ClickOnce를 사용하여 배포해야 합니다.

ClickOnce를 사용하여 배포되는 응용 프로그램에는 Code Access Security (CAS)를 통해 추가 보안 계층이 제공되며 기본적으로 응용 프로그램을 배포한 ClickOnce를 사용하여 배포된 응용 프로그램에서는 필요한 권한을 요청합니다. 이렇게 응용 프로그램에는 해당 권한만 부여됩니다. 단, 해당 권한이 응용 프로그램이 배포된 영역에 대한 권한 집합보다 높은 권한이 아니어야 합니다. 권한 집합이 시작 영역의 권한 집합에서 제공하는 권한보다 낮아도 정확하게 필요한 수준의 권한 집합만 제공하도록 조정하면 응용 프로그램에서 액세스할 수 있는 리소스의 수가 최소 기본 수로 줄어듭니다. 따라서 응용 프로그램이 교란되어도 클라이언트 컴퓨터에 대한 손상 가능성은 줄어듭니다.

보안 중요 방법

XBAP 응용 프로그램에 대해 인터넷 영역 샌드박스를 사용할 수 있는 권한을 사용하는 WPF 코드에 대해서는 최대한 보안 감사하고 제어해야 합니다. 이를 위해서 .NET Framework에서는 권한을 상승시키는 코드를 관리하기 위한 새로운 기능을 지원합니다. 특히 CLR을 사용하면 권한을 상승시키는 코드를 식별할 수 있으며 SecurityCriticalAttribute를 사용하여 해당 코드를 표시할 수 있습니다. SecurityCriticalAttribute를 사용하여 표시되지 않은 코드는 이 방법을 사용하여 투명하게 됩니다. 반대로 SecurityCriticalAttribute를 사용하여 표시되지 않은 관리 코드는 권한을 상승시킬 수 없습니다.

보안 중요 방법을 사용하면 권한을 상승시키는 WPF 코드는 보안 중요 커널로 구성되고 나머지는 투명해집니다. 보안 중요 코드를 격리하면 WPF 엔지니어링 팀에서는 표준 보안 방법은 물론 보안 중요 커널에 추가적인 보안 분석 및 소스 제어를 집중할 수 있습니다. 자세한 내용은 WPF 보안 전략 - 보안 엔지니어링를 참조하십시오.

.NET Framework에서는 신뢰할 수 있는 코드에서 XBAP 인터넷 영역 샌드박스를 확장할 수 있도록 지정하기 때문에 개발자가 AllowPartiallyTrustedCallersAttribute(APTCA)를 사용하여 표시되고 사용자의 전역 어셈블리 캐시에 배포되는 관리되는 어셈블리를 작성할 수 있습니다. APTCA를 사용하여 어셈블리를 표시하는 작업은 이 작업을 통해 인터넷에서 다운로드한 악의적인 코드를 포함하여 코드를 통해 해당 어셈블리가 호출될 수 있으므로 보안상 매우 중요한 작업입니다. 따라서 이러한 작업을 수행할 때는 매우 주의하여 최선의 방법을 사용해야 하며 사용자는 신뢰한 소프트웨어만 설치될 수 있도록 선택해야 합니다.

Microsoft Internet Explorer 보안

보안 문제를 줄이고 보안 구성을 간소화하는 작업 외에도 Microsoft Internet Explorer 6 (SP2)에는 XAML browser applications (XBAPs) 사용자에 대해 보안을 강화하는 몇 가지 보안 강화 기능이 포함되어 있습니다. 이러한 기능을 통해 사용자는 검색 환경을 더 많이 제어할 수 있습니다.

IE6 SP2 이전 버전의 경우에 사용자는 다음과 같은 경험을 했습니다.

  • 무작위 팝업 창

  • 혼동스러운 스크립트 리디렉션

  • 일부 웹 사이트에서의 수많은 보안 대화 상자

일부 신뢰할 수 없는 웹 사이트에서 사용자가 Microsoft ActiveX 설치 대화 상자를 취소해도 반복적으로 표시되거나 설치 user interface (UI)를 스푸핑하여 사용자를 속이는 경우가 있습니다. 이러한 기술을 사용하면 상당히 많은 사용자를 속여 스파이웨어 응용 프로그램을 실수로 설치하도록 할 수 있습니다.

IE6 SP2에는 사용자 초기화 개념과 관련된 이러한 유형의 문제를 줄일 수 있는 몇 가지 기능이 포함되어 있습니다. IE6 SP2에서는 사용자 초기화 작업 전에 사용자가 링크 또는 페이지 요소를 클릭하는 것을 감지하여 페이지의 스크립트에 의해 트리거되는 유사한 작업과 구별하여 처리합니다. 예를 들어 IE6 SP2에는 페이지에서 팝업을 만들기 전에 사용자가 단추를 누르는 것을 감지하는 팝업 블로커가 포함되어 있습니다. 이러한 기능을 사용하여 IE6 SP2에서는 사용자가 요청하지 않거나 원하지 않는 팝업은 차단하면서 대부분의 무해한 팝업은 허용합니다. 차단된 팝업은 새 정보 표시줄 아래에 트래핑되어 사용자가 직접 차단을 재정의하고 팝업을 볼 수 있습니다.

또한 동일한 사용자 초기화 논리를 열기/저장 보안 프롬프트에 적용하여 ActiveX 설치 대화 상자가 이전에 설치된 컨트롤로부터의 업그레이드를 표시하는 경우가 아니면 해당 대화 상자를 항상 정보 표시줄 아래에 트래핑합니다. 이러한 기능을 결합하여 사용자가 원치 않는 소프트웨어 또는 악의적인 소프트웨어를 설치하도록 하는 사이트로부터 사용자를 보호함으로써 사용자에게 보다 안전하고 안정된 사용자 경험을 제공합니다.

또한 이러한 기능은 WPF 응용 프로그램을 다운로드하고 설치할 수 있는 웹 사이트로 이동하는 데 IE6 SP2를 사용하는 사용자를 보호합니다. 특히 IE6 SP2에서는 사용자가 WPF를 포함하여 응용 프로그램을 빌드하는 데 사용된 어떤 기술에도 상관없이 악의적인 응용 프로그램 또는 사기적인 응용 프로그램을 실수로 설치하지 않도록 보다 나은 사용자 환경을 제공합니다. WPF는 이러한 보호 기능에 덧붙여 ClickOnce를 사용하여 인터넷을 통해 해당 응용 프로그램을 보다 쉽게 다운로드할 수 있는 환경을 제공합니다. XAML browser applications (XBAPs)가 인터넷 영역 보안 샌드박스 내에서 실행되기 때문에 원활하게 시작될 수 있습니다. 반면에 독립 실행형 WPF 응용 프로그램을 실행하려면 완전히 신뢰해야 합니다. 이러한 응용 프로그램의 경우 ClickOnce에서는 시작 프로세스 동안 보안 대화 상자를 표시하여 사용자에게 응용 프로그램의 추가 보안 요구 사항을 사용하도록 알립니다. 그러나 이 기능은 사용자가 초기화해야 하고, 사용자 초기화 논리에 의해 제어되고, 취소할 수 있습니다.

Internet Explorer 7에서는 진행 중인 보안 노력의 일환으로 IE6 SP2의 보안 기능을 통합하여 확장합니다.

참고 항목

개념

코드 액세스 보안

보안(WPF)

WPF 부분 신뢰 보안

WPF 보안 전략 - 보안 엔지니어링

기타 리소스

Understanding Security in Microsoft Internet Explorer 6 in Windows XP SP2

Understanding and Working in Protected Mode Internet Explorer

Windows XP SP3(서비스 팩 3) 설치 방법

Windows Vista Security Guide