ClickOnce 배포 및 보안

업데이트: 2007년 11월

ClickOnce 기술로 배포되는 응용 프로그램은 보안 영역 기반의 제한된 사용 권한 집합을 사용하여 "샌드박스"에서 실행됩니다. 다음 표는 배포 위치에 따른 기본 사용 권한을 보여 줍니다.

배포 위치

보안 영역

웹에서 실행

인터넷 영역

웹에서 설치

인터넷 영역

네트워크 파일 공유에서 설치

인트라넷 영역

CD-ROM에서 설치

Full Trust

기본 사용 권한은 응용 프로그램의 원래 버전이 배포된 위치를 기반으로 하며, 응용 프로그램 업데이트 시 해당 사용 권한이 상속됩니다. 응용 프로그램이 웹 또는 네트워크 위치에서 업데이트를 확인하도록 구성되어 있고 최신 버전이 사용 가능하면 원래 설치된 버전에서 완전 신뢰 권한 대신 인터넷 또는 인트라넷 영역에 대한 사용 권한을 받을 수 있습니다. 시스템 관리자가 특정 응용 프로그램 게시자를 신뢰할 수 있는 소스로 정의하는 ClickOnce 배포 정책을 지정하여 해당 메시지가 표시되지 않게 할 수도 있습니다. 이 정책이 배포되는 컴퓨터의 경우 사용 권한이 자동으로 부여되므로 사용자에게 관련 메시지가 표시되지 않습니다.

보안 및 사용 권한

개발자는 적절한 사용 권한으로 응용 프로그램이 실행되도록 해야 합니다.

참고:

Visual Studio를 사용하면 대상 보안 영역에서 응용 프로그램을 디버깅할 수 있고 보안 응용 프로그램 개발에 도움이 됩니다.

ClickOnce 응용 프로그램에 고급 권한이 필요한 경우가 있습니다. 예를 들어, Excel 스프레드시트와 상호 작용해야 하는 응용 프로그램에는 인터넷 또는 인트라넷 영역에 대해 정의된 사용 권한 이상의 권한이 필요합니다. 응용 프로그램에 고급 권한이 필요한 경우, 설치 과정에서 사용 권한을 부여하라는 메시지가 사용자에게 표시됩니다. 사용자가 동의하면 응용 프로그램이 설치되고 동의하지 않으면 설치가 중단됩니다.

참고:

시스템 관리자가 특정 응용 프로그램 게시자를 신뢰할 수 있는 소스로 정의하는 ClickOnce 배포 정책을 지정하여 해당 메시지가 표시되지 않게 할 수도 있습니다. 이 정책이 배포되는 컴퓨터에서는 사용 권한이 자동으로 부여되므로 사용자에게 관련 메시지가 표시되지 않습니다.

응용 프로그램에 대한 사용 권한은 응용 프로그램 매니페스트의 <trusfinfo> 요소(ClickOnce 응용 프로그램) 요소에 있는 설정에 따라 결정되며, Visual Studio가 프로젝트에 대한 보안 속성 페이지의 설정을 기준으로 이 정보를 자동 생성합니다. ClickOnce 응용 프로그램에는 필요한 특정 권한만 부여됩니다. 예를 들어, 파일에 액세스하는 데 완전 신뢰 권한이 필요할 때 응용 프로그램에서 파일 액세스 권한을 요청하면 완전 신뢰 권한이 아니라 파일 액세스 권한만 부여됩니다. ClickOnce 응용 프로그램을 개발할 때는 응용 프로그램에 필요한 특정 사용 권한만 요청해야 합니다.

또한 Authenticode 서명을 사용하여 배포 매니페스트에 서명해야 합니다. 설치하는 동안 사용 권한 대화 상자에서 Authenticode 서명을 기반으로 하는 게시자 정보가 표시되어, 응용 프로그램이 신뢰할 수 있는 소스에서 온다는 것을 보여 줍니다. Windows SDK(소프트웨어 개발 키트)에는 매니페스트에 서명하는 데 사용할 수 있는 파일 서명 도구인 서명 도구(SignTool.exe)가 들어 있습니다. 서명 도구 signcode.exe는 더 이상 사용되지 않습니다.

참고:

Visual Studio 2003 및 이전 버전에서 사용 가능했던 서명 기능이 설치 및 배포 프로젝트(설치 프로젝트, 웹 설치 프로젝트, CAB 프로젝트 및 병합 모듈)에서 제거되었습니다. Visual Studio 2005에서 사용할 수 있는 서명 기능이 있는 Visual Studio 2003 프로젝트를 가져온 경우 또는 배포 프로젝트에 대해 서명 기능을 사용하려는 경우, 빌드 후 단계에서 서명 도구(SignTool.exe)를 사용하여 빌드 출력의 파일에 서명해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 The file '<file>' was not signed를 참조하십시오.

ASP.NET 폼 기반 인증

각 사용자가 액세스할 수 있는 배포를 제어하려면 웹 서버에 배포된 ClickOnce 응용 프로그램에 익명 액세스를 허용하지 마십시오. 대신 Windows NT 인증을 사용하여 사용자 ID를 기반으로 사용자가 설치한 배포에 대한 사용자 액세스를 허용합니다.

Windows NT 인증을 사용하지 않는 환경에 배포할 경우 ASP.NET 폼 기반 인증을 사용하여 사용자를 인증할 수 있습니다. 그러나 ClickOnce에서는 영구 쿠키를 사용하므로 폼 기반 인증을 지원하지 않습니다. 영구 쿠키는 Internet Explorer 캐시에 위치하여 해킹 가능하므로 보안 위험이 존재합니다. 따라서 ClickOnce 응용 프로그램을 배포할 경우 Windows NT 인증 이외의 인증 시나리오는 지원되지 않습니다.

인수 전달

ClickOnce 응용 프로그램에 인수를 전달해야 하는 경우 보안과 관련하여 몇 가지 사항을 더 고려해야 합니다. ClickOnce를 사용하면 개발자가 웹을 통해 배포된 응용 프로그램에 쿼리 문자열을 제공할 수 있습니다. 쿼리 문자열은 일련의 이름/값 쌍 형식으로서, 다음과 같이 응용 프로그램을 시작하는 데 사용되는 URL의 끝에 붙습니다.

http://servername.adatum.com/WindowsApp1.application?username=joeuser

기본적으로 쿼리 문자열 인수는 사용할 수 없습니다. 쿼리 문자열을 사용하려면 응용 프로그램 배포 매니페스트에서 trustUrlParameters 특성을 설정해야 합니다. 이 값은 Visual Studio 및 MageUI.exe에서 설정할 수 있습니다. 쿼리 문자열을 전달할 수 있게 설정하는 방법에 대한 자세한 내용은 방법: ClickOnce 응용 프로그램에서 쿼리 문자열 정보 검색을 참조하십시오.

쿼리 문자열을 통해 검색된 인수를 안전성을 확인하지 않고 데이터베이스나 명령줄에 직접 전달하면 안 됩니다. 안전하지 않은 인수는 데이터베이스 또는 명령줄 이스케이프 문자가 들어 있는 인수입니다. 이러한 문자가 있으면 악의적인 사용자가 응용 프로그램을 조작하여 임의의 명령을 실행할 수 있게 됩니다.

참고:

쿼리 문자열 인수는 시작할 때 ClickOnce 응용 프로그램에 인수를 전달할 수 있는 유일한 방법입니다. 명령줄에서는 ClickOnce 응용 프로그램에 인수를 전달할 수 없습니다.

난독 처리된 어셈블리 배포

Dotfuscator를 통해 응용 프로그램을 난독 처리하여 다른 사용자가 코드를 리버스 엔지니어링하지 못하도록 할 수 있습니다. 그러나 어셈블리 난독 처리는 Visual Studio IDE 또는 ClickOnce 배포 프로세스에 통합되지 않습니다. 따라서 빌드 후 단계 등을 통해 배포 프로세스 외부에서 난독 처리를 수행해야 합니다. 프로젝트를 빌드한 후 Visual Studio 외부에서 다음 단계를 직접 수행합니다.

  1. Dotfuscator를 사용하여 난독 처리를 수행합니다. 자세한 내용은 연습: ClickOnce 응용 프로그램 수동 배포를 참조하십시오.

  2. Mage.exe나 MageUI.exe를 사용하여 ClickOnce 매니페스트를 생성하고 서명합니다. 자세한 내용은 매니페스트 생성 및 편집 도구(Mage.exe)매니페스트 생성 및 편집 도구, 그래픽 클라이언트(MageUI.exe)를 참조하십시오.

  3. 배포 소스 위치(웹 서버, UNC 공유 또는 CD-ROM)에 파일을 직접 복사하여 게시합니다.

참고 항목

개념

배포 전략 선택

ClickOnce 배포 전략 선택

참조

파일 서명 도구(Signcode.exe)

기타 리소스

ClickOnce 배포