문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

보안

Silverlight

Silverlight 설계에는 보안이 포함되어 있습니다. 기본적으로 Silverlight 응용 프로그램은 브라우저에 호스팅되고 사용자 컴퓨터에 대한 액세스를 제한하는 환경에서 실행됩니다. 실행 환경이 제한되어 있지만 Silverlight 응용 프로그램을 빌드할 때는 일부 보안 문제를 고려해야 합니다. 또한 Silverlight 4 이상의 응용 프로그램은 보안에 영향을 줄 수 있는 높은 신뢰 수준으로 실행하도록 구성할 수 있습니다.

이 항목에서는 제한된 실행 환경을 통해 Silverlight를 보호하는 방법에 대해 설명하고 다양한 시나리오에서 Silverlight 응용 프로그램 빌드 시 도움이 되는 보안 지침을 제공합니다. 또한 자세한 정보를 보여주는 다양한 링크를 제공합니다.

참고 참고:

이 항목에서는 Silverlight 응용 프로그램을 배포하고 웹 사이트를 보호하는 방법에 대해서는 설명하지 않습니다. 배포에 대한 자세한 내용은 Silverlight Deployment Guide, Group Policy SettingsSecurity Guidance for Writing and Deploying Silverlight Applications 백서를 참조하십시오.

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

Silverlight는 설계, 구현, 보안 테스트 과정으로 구성된 Microsoft SDL(Security Development Lifecycle)을 사용하여 개발되었습니다. Silverlight 응용 프로그램은 일반적으로 샌드박스라고도 하는 부분 신뢰 보안 경계 내에서 작동합니다. 대부분의 Silverlight 응용 프로그램은 샌드박스 내에서 실행되기 때문에 기존 .NET 응용 프로그램과 동일한 방식으로 파일 시스템 및 기타 시스템 리소스에 액세스할 수 없습니다. 이러한 작업을 수행할 수는 있지만 일반적으로 사용자가 작업을 시작해야 합니다.

보안 관련 용어

Silverlight의 보안을 이해하려면 보안 관련 용어에 대해 알아야 합니다. 다음 표에서는 일반적인 보안 관련 용어와 정의를 보여 줍니다.

항목

정의

샌드박스

제한된 권한의 응용 프로그램 실행 환경을 나타냅니다.

부분 신뢰(partial trust)

제한된 권한을 갖는 응용 프로그램 실행 환경을 설명합니다.

신뢰

파일 시스템에 대한 향상된 액세스 권한과 같은 높은 보안 권한을 갖는 응용 프로그램 실행 환경을 설명합니다.

완전 신뢰

사용자 컴퓨터에 대한 모든 권한을 갖는 응용 프로그램 실행 환경을 나타냅니다.

보안 기능

Silverlight에서는 다양한 방식으로 부분 신뢰 환경을 실행합니다. 다음 표에서는 Silverlight의 기능을 보여주고 이러한 기능을 사용하여 응용 프로그램의 보안을 강화하는 방법을 설명합니다. 신뢰할 수 있는 응용 프로그램의 경우에는 이러한 보안 제약 조건 중 일부가 완화됩니다. 자세한 내용은 신뢰할 수 있는 응용 프로그램을 참조하십시오.

응용 프로그램 기능

샌드박스 제한 사항

파일 시스템 액세스

파일 시스템 액세스가 제한되고 대부분의 대화 상자를 사용자가 시작해야 합니다. 자세한 내용은 대화 상자 개요을 참조하십시오.

격리된 로컬 저장소

로컬 저장소가 나머지 파일 시스템으로부터 격리됩니다. 사용자가 늘리지 않을 경우 저장소는 1MB로 제한됩니다. 사용자는 격리된 저장소 캐시를 지울 수 있습니다. 자세한 내용은 격리된 저장소을 참조하십시오.

전체 화면 모드

전체 화면 모드는 사용자가 시작해야 하며 종료 방법에 대한 메시지가 표시됩니다. 사용자가 Esc 키를 누르거나 다른 창으로 전환하면 응용 프로그램에서 전체 화면 모드가 자동으로 종료됩니다. 자세한 내용은 전체 화면 지원을 참조하십시오.

웹캠 및 마이크 지원

웹캠 또는 마이크 사용은 사용자가 시작해야 합니다. 사용자가 보안 프롬프트에서 권한을 부여해야 합니다. 자세한 내용은 웹캠 및 장치 개요을 참조하십시오.

Silverlight 4 이상.

인쇄

인쇄 대화 상자는 사용자가 시작해야 합니다. 자세한 내용은 인쇄을 참조하십시오.

Silverlight 4 이상.

클립보드 액세스

클립보드 액세스는 사용자가 시작해야 합니다. 사용자가 보안 프롬프트에서 권한을 부여해야 합니다. 현재 페이지를 닫거나 사용자가 탐색을 끝내면 권한이 종료됩니다. 자세한 내용은 Clipboard을 참조하십시오.

Silverlight 4 이상.

마우스 오른쪽 단추 클릭, 상황에 맞는 메뉴 지원

기본적으로 Silverlight에서는 Microsoft Silverlight 구성 대화 상자에 액세스하는 옵션이 포함된, 마우스 오른쪽 단추를 클릭하면 표시되는 상황에 맞는 메뉴를 제공합니다. 응용 프로그램에서 고유한 마우스 오른쪽 단추 클릭 지원을 제공하는 경우에는 시작 메뉴에서도 구성 대화 상자를 사용할 수 있습니다.

리플렉션 및 리플렉션 내보내기

리플렉션 및 리플렉션 내보내기는 부분 신뢰 요구 사항에 따라 제한됩니다. 자세한 내용은 리플렉션의 보안 고려 사항리플렉션 내보내기의 보안 문제점를 참조하십시오.

네트워크 리소스 액세스

네트워크 리소스 액세스는 제한됩니다. 일부 네트워크 프로토콜만 사용할 수 있으며 보안 정책에 따라 액세스가 제한됩니다. 자세한 내용은 안전한 방식으로 네트워크 리소스 액세스를 참조하십시오.

보안 샌드박스를 구성하는 방법에 대한 자세한 내용은 Silverlight 응용 프로그램 보안 모델을 참조하십시오.

일반적으로 Silverlight 응용 프로그램은 웹 브라우저에서 호스팅됩니다. 사용자는 웹 페이지의 요소로 Silverlight 개체를 만들고 해당 개체에 대한 Source 속성을 XAP 파일(Silverlight 콘텐츠가 포함된 zip 파일)로 설정합니다. Silverlight 응용 프로그램은 Silverlight 플러그 인을 호스팅하는 나머지 HTML 페이지 이외의 다른 보안 컨텍스트에서 실행됩니다.

브라우저 외부에서 실행되도록 Silverlight 응용 프로그램을 구성할 수 있으며 보안 샌드박스에서 적용된 일부 제한을 무시하도록 브라우저 외부 실행 응용 프로그램을 구성할 수 있습니다.

다음 표에서는 Silverlight 호스팅 환경을 보여 줍니다.

호스팅 환경

설명

웹 브라우저, 부분 신뢰

Silverlight 응용 프로그램이 웹 페이지의 일부로 실행되며 호스트 컴퓨터에 대한 액세스가 제한됩니다.

브라우저 외부, 부분 신뢰

Silverlight 응용 프로그램은 사용자의 컴퓨터에 설치되지만 브라우저 내 Silverlight 응용 프로그램과 동일한 보안 컨텍스트가 적용됩니다.

브라우저 외부, 높은 신뢰

Silverlight 응용 프로그램이 사용자 컴퓨터에 높은 액세스 권한으로 설치됩니다. Silverlight 4 이상.

참고 참고:
Silverlight 4 이상에서는 높은 신뢰 권한으로 Silverlight 응용 프로그램을 실행하도록 구성할 수 있습니다. 신뢰할 수 있는 응용 프로그램의 경우 사용자 시작에 대한 제한 사항이 더 적으며 사용자 컴퓨터에 대한 액세스 권한 수준이 더 높습니다. 이는 Silverlight 응용 프로그램에서 웹 서비스도 호출하는 경우 특히 중요합니다. 이러한 유형의 응용 프로그램을 만들기 전에 신뢰할 수 있는 응용 프로그램이 필요한지 신중하게 검토해야 합니다. 또한 응용 프로그램에 디지털 서명하는 등의 보안 조치를 추가로 취해야 합니다. 신뢰할 수 있는 응용 프로그램과 보안 고려 사항에 대한 자세한 내용은 신뢰할 수 있는 응용 프로그램을 참조하십시오.

XSS(사이트 간 스크립팅)는 웹 응용 프로그램에서 일반적으로 발견되는 취약점을 말합니다. 이러한 종류의 취약점을 방지하기 위해 조치를 취하지 않는 경우 공격자가 다른 도메인에 호스팅된 웹 페이지에 코드(일반적으로 JavaScript)를 삽입할 수 있습니다. XSS 및 다른 종류의 클라이언트 취약점에 대한 자세한 내용은 Client-side Cross-domain Security를 참조하십시오. Silverlight의 경우 XSS 문제가 발생할 수 있지만 기존 HTML 개발에서보다는 가능성이 낮습니다. 하지만 공격자가 사이트 간 스크립팅 취약점을 악용하여 브라우저에서 합법적인 클라이언트에만 일반적으로 부여하는 인증 데이터, 격리된 저장소 및 쿠키에 액세스할 수 있습니다.

Silverlight에서는 일반적으로 공격자 제어 문자열이 유효성 검사나 이스케이프를 거치지 않고 태그에 삽입되는 경우에 XSS 문제가 발생합니다.

다음 목록에서는 XSS 취약점 노출에 유의해야 하는 시나리오를 보여 줍니다. 나열된 대부분의 완화 방법은 이 문서의 다른 단원들에 설명되어 있습니다. 하지만 XSS 문제의 컨텍스트에서 이러한 취약점에 대해 잘 알고 있어야 합니다.

  • XamlReader.Load 메서드를 사용하여 신뢰할 수 없는 XAML 로드. 사용자를 알 수 없는 문자열 또는 부분 문자열을 로드해서는 안 됩니다. 자세한 내용은 XamlReader.Load 사용을 참조하십시오.

  • RichTextBox 컨트롤의 Xaml 속성을 공격자가 제공한 문자열로 설정

  • Assembly.Load 메서드를 사용하여 신뢰할 수 없는 어셈블리 로드

  • 문자열을 결합하여 XML 만들기. 예를 들어 문자열을 결합하여 REST 서비스에 보낼 XML을 만들 수 있습니다. XmlWriter XElement 클래스를 사용하여 보안이 강화된 XML을 만듭니다. 자세한 내용은 보안 고려 사항(Silverlight의 XML 데이터)을 참조하십시오.

  • System.Windows.Browser 네임스페이스에 제공된 클래스를 사용하여 Silverlight에서 HTML 만들기 또는 호스팅 페이지에 대한 Silverlight 플러그 인의 신뢰할 수 없는 액세스 허용. 자세한 내용은 Settings.EnableHTMLAccess 속성을 참조하십시오.

  • WebBrowser.NavigateToString 메서드를 사용하여 Silverlight에서 공격자가 제공한 HTML 표시. 이는 브라우저 외부 응용 프로그램에서만 표시할 수 있습니다. Silverlight 4 이상.

  • 사용자 업로드를 허용하여 웹 서버에서 공격자의 XAP 파일 호스팅

일반적으로 Silverlight 응용 프로그램을 더 많이 격리할수록 더 안전하게 됩니다. Silverlight 응용 프로그램에 대한 대부분의 보안은 다른 응용 프로그램 및 리소스와 연관하여 결정됩니다. 호스팅 환경, 다른 코드 및 다른 Silverlight 응용 프로그램 간의 통신을 허용할지 여부를 결정해야 합니다. 이러한 각각의 선택이 보안에 영향을 줍니다. 예를 들어 Silverlight 응용 프로그램이 사이트 간 스크립팅 및 기타 공격에 취약해 질 수 있습니다. 다음 단원에서는 응용 프로그램을 격리시키는 여러 가지 방법에 대해 설명합니다.

호스트 HTML 페이지에서 격리

Silverlight 응용 프로그램은 HTML 페이지의 일부입니다. 보안상의 이유로 Silverlight 응용 프로그램에 대한 호스팅 HTML 페이지의 통신을 허용하지 않을 경우가 있습니다. Silverlight 응용 프로그램에서 HTML 페이지를 호출하고 HTML 브리지 기능을 사용하여 호스팅 HTML 페이지에서 호출을 받을 수 있는지 여부를 제어할 수 있습니다. 이러한 보안 설정을 관리하는 방법에 대한 자세한 내용은 HTML 브리지의 보안 설정을 참조하십시오.

다른 코드에서 격리

Silverlight 응용 프로그램에서 로드하는 모든 어셈블리는 악의적인 어셈블리일 수 있으므로 응용 프로그램에서 신뢰할 수 있는 어셈블리만 로드하는지 확인해야 합니다. SignTool.exe로 서명하도록 요구하여 어셈블리의 신뢰 수준을 높일 수 있습니다.

다른 Silverlight 응용 프로그램에서 격리

호스트 HTML 페이지를 통한 Silverlight 응용 프로그램 간의 통신 이외에 Silverlight 응용 프로그램에서 로컬 메시징 기능을 사용하여 다른 Silverlight 응용 프로그램과 통신하도록 구성할 수 있습니다. 기본적으로 Silverlight에서는 로컬 메시징을 동일한 도메인의 보낸 사람과 받는 사람으로 제한하며, 이를 다른 도메인과의 통신으로 확장할 경우 주의해야 합니다. 로컬 메시징에 대한 자세한 내용은 로컬 Silverlight 기반 응용 프로그램 간의 통신을 참조하십시오.

Silverlight에서는 HTTP, HTTPS 및 소켓을 사용하여 네트워크 리소스에 액세스할 수 있습니다.

HTTP를 사용하여 리소스 액세스

Silverlight에서는 XAP 파일 로드 및 웹 서비스 호출에 대해 HTTP와 HTTPS를 모두 지원합니다. Silverlight에서는 기본적으로 동일 도메인 호출을 지원하지만 서비스 공급자가 도메인 간 정책 파일에서 선택한 경우 도메인 간 호출을 지원합니다. 같은 도메인이란 호출 시 같은 하위 도메인, 프로토콜 및 프로토콜을 사용해야 함을 의미합니다.

다음 그림에서는 도메인 간 호출로 간주되어 기본 설정을 사용하는 Silverlight 응용 프로그램에서는 허용되지 않는 호출의 예를 보여 줍니다.

도메인 간 예제

Silverlight 기본 네트워킹 제한

Silverlight 응용 프로그램과 Silverlight 응용 프로그램에 종속되는 웹 서비스를 배포하는 경우 웹 서비스가 Silverlight 응용 프로그램을 위협하지 않도록 안전한지를 확인해야 합니다. 배포된 웹 서비스에 대한 공격을 완화하는 방법은 Security Guidance for Writing and Deploying Silverlight Applications를 참조하십시오.

또한 Silverlight에서는 브라우저를 통해 수행되는 HTTP 처리와 Silverlight 클라이언트를 통해 수행되는 HTTP 처리의 두 가지 옵션을 제공합니다. 브라우저 HTTP 처리와 클라이언트 HTTP 처리는 쿠키 및 헤더를 처리하는 방식과 사용되는 동사가 약간 차이가 납니다. 예를 들어 클라이언트 HTTP 웹 요청에서는 참조자 헤더를 항상 보내지만 브라우저 HTTP 웹 요청에서는 호스팅 브라우저에 따라 이 헤더를 보낼 수도 있고 보내지 않을 수도 있습니다. 서버에서는 참조자 헤더를 통해 Silverlight 응용 프로그램의 도메인을 확인할 수 있습니다.

다른 유형의 HTTP 처리 옵션과 HTTP 보안 제한 및 고려 사항(예: 도메인 간 정책 파일)에 대한 자세한 내용은 다음 항목을 참조하십시오.

Title

설명

Silverlight를 사용한 HTTP 통신 및 보안

HTTP 처리 옵션 및 통신 시나리오와 이러한 시나리오를 활성화하는 방법에 대해 설명합니다. 보안 지침이 포함되어 있습니다.

Silverlight의 네트워크 보안 액세스 제한

Silverlight에서 보안 정책을 사용하는 방법과 지원되는 정책 파일 형식에 대해 설명합니다.

Silverlight의 URL 액세스 제한

런타임 시 Silverlight에서 특정 URL 클래스에 대한 액세스를 제한하는 방법을 설명합니다.

도메인 경계에서 서비스를 사용 가능하도록 설정

Silverlight에서 도메인 간 액세스를 위해 선택하는 도메인 간 정책 파일에 대해 설명합니다.

서비스 액세스에 대한 추가 보안 고려 사항

Silverlight에서 웹 서비스를 사용할 때 고려해야 할 보안 사항에 대해 설명합니다.

소켓을 사용하여 리소스 액세스

Silverlight에서는 소켓 통신을 지원합니다. 소켓으로 통신할 때의 보안 고려 사항과 제한에 대한 자세한 내용은 다음 항목을 참조하십시오.

Title

설명

소켓 작업

소켓 네트워킹 인터페이스의 관리되는 구현을 설명합니다.

Silverlight의 네트워크 보안 액세스 제한

Silverlight의 보안 정책 시스템 및 소켓에 대해 설명합니다.

멀티캐스트 작업

안전한 방식으로 Silverlight 멀티캐스트 클라이언트를 만드는 방법에 대해 설명합니다.

격리된 저장소는 사용자에 대한 데이터를 저장하는 한 가지 메커니즘입니다. 격리된 저장소에 있는 데이터는 컴퓨터 관리자 및 동일한 도메인의 모든 응용 프로그램에서 액세스할 수 있습니다. 즉, 격리된 저장소에 중요한 데이터를 저장할 경우 데이터를 암호화할 것을 고려하십시오. 격리된 저장소 및 암호화에 대한 자세한 내용은 격리된 저장소를 참조하십시오. 격리된 저장소 파일을 암호화하는 방법을 보여주는 예제는 AesManaged 클래스를 참조하십시오. 격리된 저장소 파일에 서명하는 방법을 보여주는 예제는 HMACSHA256 클래스를 참조하십시오. 데이터를 암호화하는 방법은 Silverlight의 암호화 서비스를 참조하십시오.

XAP 파일이 다른 권한 없는 HTML 페이지에 호스팅되지 않도록 조치를 취해야 합니다. 이렇게 하려면 EnableHTMLAccesstrue인 경우 HtmlDocument.DocumentUri 속성을 사용하여 XAP 파일을 시작할 때 호스트 페이지 URL을 확인합니다.

또한 암호 및 다른 비공개 정보와 같은 중요한 데이터를 XAP 파일에 저장하지 않습니다. 정보가 난독 처리되어 있더라도 악의적인 사용자가 XAP 파일에서 이 정보를 검색할 수 있습니다.

Silverlight는 일반적으로 HTML 페이지에 호스팅되기 때문에 XSS(사이트 간 스크립팅) 및 응용 프로그램의 기타 취약점에 대해 잘 알고 있어야 합니다.

앞에서 설명한 것처럼 Silverlight 응용 프로그램에서 XSS 문제를 방지하는 방법 중 하나로 신뢰할 수 없는 XAML을 로드하지 않습니다. RichTextBox.Xaml 속성 또는 XamlReader.Load 메서드를 사용하여 XAML을 로드할 수 있습니다. XAML 로드 및 보안 고려 사항에 대한 자세한 내용은 XamlReader.Load 사용을 참조하십시오.

XML 파일을 잘못 처리하면 DoS(서비스 거부) 및 기타 공격을 초래할 수 있습니다. 자세한 내용은 보안 고려 사항(Silverlight의 XML 데이터)을 참조하십시오.

응용 프로그램이 신뢰할 수 있는 응용 프로그램인 경우 로드하고 있는 XAML(XAP 파일에 있음)이 예상하는 소스에서 제공된 것인지 확인하는 조치를 취해야 합니다. 이렇게 하려면 응용 프로그램의 Host 속성을 확인하면 됩니다.

항목

설명

Silverlight 응용 프로그램 보안 모델

Silverlight의 코드 보안 모델에 대해 설명합니다.

Silverlight의 암호화 서비스

Silverlight 암호화 서비스에 대해 설명하고 관련 링크를 제공합니다.

브라우저 외부 실행 지원

브라우저 외부 실행 응용 프로그램에 대해 설명합니다.

신뢰할 수 있는 응용 프로그램

신뢰할 수 있는 응용 프로그램과 이러한 응용 프로그램을 만들 때의 보안 문제에 대해 설명합니다.

Silverlight 4 보안 개요

Silverlight 응용 프로그램 보안에 대해 설명합니다.

Security Guidance for Writing and Deploying Silverlight Applications

Silverlight 응용 프로그램을 만들고 배포하는 데 대한 보안 도움말을 제공합니다.

커뮤니티 추가 항목

추가
표시: