보안 경고 대화 상자(MSBuild 프로젝트 파일)
업데이트: 2007년 11월
Visual Studio 2005 이상 버전에서는 MSBuild 프로젝트 파일을 사용자 지정하여 빌드 프로세스를 다시 정의할 수 있습니다. 프로젝트 파일에 정의된 빌드 프로세스의 부분은 디자인 타임에 프로젝트가 IDE(통합 개발 환경)에 로드된 후 바로 실행됩니다. 보안 경고 대화 상자에서는 보안상 위험이 있을 수 있는 사용자 지정 프로젝트 파일을 검색하고 IDE에서 프로젝트를 여는 방법을 선택할 수 있습니다.
UI 요소
자세한 내용
프로젝트 파일에 잠재적인 보안상 위험이 있다고 결정한 이유를 설명하는 대화 상자를 엽니다.검색을 위해 프로젝트 로드
높은 보안 수준으로 IDE에서 프로젝트를 엽니다. 이 옵션을 사용하면 프로젝트의 내용을 검색할 수 있지만 IntelliSense와 같은 일부 기능은 제한됩니다. 검색하기 위해 프로젝트를 로드한 경우에도 디자이너의 빌드, 정리, 게시 또는 열기와 같은 작업은 여전히 안전하지 않습니다.정상적으로 프로젝트 로드
IDE에서 프로젝트를 정상적으로 엽니다. 소스를 신뢰할 수 있고 관련된 잠재적인 위험에 대해 알고 있는 경우에만 이 옵션을 사용하십시오. IDE에서 프로젝트 기능을 제한하지 않으며 이 프로젝트에 관한 메시지를 다시 표시하지 않습니다.이 솔루션의 모든 프로젝트에 대해 확인
해당 솔루션의 모든 프로젝트에 대해 확인 메시지를 표시하려면 이 옵션을 선택합니다.
안전하지 않은 프로젝트 파일 결정
프로젝트 파일에 잠재적인 보안상 위험이 있다고 결정하는 이유는 다음과 같이 몇 가지가 있습니다.
프로젝트 파일에 비표준 Import 요소가 하나 이상 포함되어 있습니다.
프로젝트 파일에서 잠재적으로 안전하지 않은 하나 이상의 대상을 재정의합니다. 대상에 대한 자세한 내용은 MSBuild 대상을 참조하십시오.
프로젝트 파일에서 잠재적으로 안전하지 않은 하나 이상의 속성을 재정의합니다. 속성에 대한 자세한 내용은 MSBuild 속성을 참조하십시오.
프로젝트 파일에서 잠재적으로 안전하지 않은 하나 이상의 항목을 재정의합니다. 항목에 대한 자세한 내용은 MSBuild 항목을 참조하십시오.
프로젝트 파일에 UsingTask 요소가 하나 이상 포함되어 있습니다.
프로젝트 항목이 잠재적으로 안전하지 않은 위치에 있습니다.
비표준 가져오기 요소
표준 .targets 파일 목록은 레지스트리의 HKEY_LOCALMACHINE\Software\Microsoft\VisualStudio\8.0\MSBuild\SafeImports\에 저장되어 있습니다. 프로젝트 파일이 이 레지스트리에 저장되어 있지 않은 .targets 파일을 가져오는 경우 잠재적인 보안상 위험이 있다고 결정됩니다.
잠재적으로 위험한 대상
IDE는 프로젝트를 로드하는 동안 여러 대상을 실행합니다. 이러한 대상 중 하나가 사용자 지정 프로젝트 파일에서 재정의되었으면 해당 대상은 잠재적인 보안상 위험이 있다고 간주됩니다. 프로젝트를 로드하는 동안 IDE가 실행하는 대상에는 다음이 포함됩니다.
Compile
GetFrameworkPaths
AllProjectOutputGroupsDependencies
AllProjectOutputGroups
CopyRunEnvironmentFiles
ResolveComReferences
ResolveAssemblyReferences
ResolveNativeReferences
잠재적으로 위험한 속성
다음 목록에서는 잠재적으로 위험한 속성의 기본적인 유형을 설명합니다.
잠재적으로 위험한 대상의 DependsOn 특성에서 사용되는 속성
안전한 .targets 파일에서 사용된 Import 요소의 Project 특성에서 사용되는 속성
잠재적으로 위험한 대상이나 해당 작업에 의해 사용되는 속성
밑줄(_)로 시작하는 속성
잠재적으로 위험한 대상, 항목 및 속성을 관리하기 위해 IDE에서 사용하는 특수한 속성이 있습니다. 이러한 속성은 프로젝트 파일에서 재정의될 수 없습니다. 이러한 특수 속성은 다음과 같습니다.
LoadTimeSensitiveTargets
LoadTimeSensitiveProperties
LoadTimeSensitiveItems
LoadTimeCheckItemLocation
잠재적으로 위험한 항목
가져온 .targets 파일에 의해 사용되는 특정 항목은 프로젝트 파일에서 재정의될 수 없습니다. 이러한 항목 중 하나 이상이 재정의되면 잠재적인 보안상 위험이 있는 프로젝트로 간주됩니다.
UsingTask 요소
사용자 지정 작업은 잠재적으로 안전하지 않은 코드를 실행할 수 있습니다. 따라서 UsingTask 요소를 하나 이상 포함하는 모든 프로젝트 파일은 잠재적인 보안상 위험이 있다고 간주됩니다.
잠재적으로 위험한 위치에 있는 프로젝트 항목
다른 점에서는 안전한 .targets 파일에 있는 일부 항목은 해당 경로가 설정된 사용자 정의 프로젝트 속성을 사용합니다. 항목이 중요한 파일을 덮어쓰지 않도록 하기 위해, 다음 위치 중 하나로 또는 그 하위 디렉터리로 확인되는 항목 경로를 포함하는 프로젝트 파일은 솔루션 파일이나 프로젝트 파일 디렉터리 내에 또는 그 하위 디렉터리에 있지 않은 경우 보안상 잠재적인 위험이 있다고 간주됩니다.
모든 드라이브의 루트 디렉터리
Windows 디렉터리(예: C:\Windows\)
Program Files 디렉터리(예: C:\Program Files\)