[セキュリティ警告] ダイアログ ボックス (MSBuild プロジェクト ファイル)

更新 : 2007 年 11 月

Visual Studio 2005 では、MSBuild プロジェクト ファイルをカスタマイズしてビルド プロセスを再定義できます。プロジェクト ファイルで定義されているビルド プロセスの一部は、統合開発環境 (IDE) にプロジェクトが読み込まれた直後、デザイン時に実行されます。[セキュリティ警告] ダイアログ ボックスでは、セキュリティ リスクの原因となり得るカスタマイズされたプロジェクト ファイルを検出し、IDE でプロジェクトをどのように開くかを選択できます。

UI 要素

  • 詳細情報
    プロジェクト ファイルにセキュリティ リスクの可能性が検出された理由について説明するダイアログ ボックスを開きます。

  • 参照用にプロジェクトを読み込む
    IDE のセキュリティを強化した状態でプロジェクトを開きます。このオプションを使用すると、プロジェクトの内容を参照することはできますが、IntelliSense などの一部の機能は制限されます。プロジェクトを参照用に読み込んだ場合でも、デザイナをビルド、消去、発行、開くなどのアクションは依然として危険である可能性があります。

  • 標準的にプロジェクトを読み込む
    プロジェクトを通常の方法で IDE で開きます。プロジェクトのソースが信頼でき、可能性のある危険について把握している場合に、このオプションを使用します。IDE はプロジェクトの機能をまったく制限せず、このプロジェクトに対して次回からはプロンプトを表示しません。

  • ソリューション内のすべてのプロジェクトに対して確認メッセージを表示する
    ソリューション内のすべてのプロジェクトに対してプロンプトを表示するには、このオプションを選択します。

危険なプロジェクト ファイルの特定

プロジェクト ファイルにセキュリティ リスクの可能性が検出されたと判断される理由は、いくつか考えられます。その理由を以下に示します。

  • プロジェクト ファイルに、非標準の Import 要素が少なくとも 1 つ含まれている。

  • プロジェクト ファイルで、危険性のあるターゲットを少なくとも 1 つオーバーライドしている。ターゲットの詳細については、「MSBuild ターゲット」を参照してください。

  • プロジェクト ファイルで、危険性のあるプロパティを少なくとも 1 つオーバーライドしている。プロパティの詳細については、「MSBuild プロパティ」を参照してください。

  • プロジェクト ファイルで、危険性のある項目を少なくとも 1 つ定義している。項目の詳細については、「MSBuild 項目」を参照してください。

  • プロジェクト ファイルに、UsingTask 要素が少なくとも 1 つ含まれている。

  • プロジェクト項目が安全でない場所に置かれている。

非標準の Import 要素

標準の .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 ファイルによって使用される特定の項目を、プロジェクト ファイルでオーバーライドすることはできません。これらの項目が 1 つでもオーバーライドされた場合、そのプロジェクトはセキュリティ リスクの可能性があると見なされます。

UsingTask 要素

カスタム タスクでは、アンセーフ コードが実行される可能性があります。そのため、1 つ以上の UsingTask 要素を含むすべてのプロジェクト ファイルは、セキュリティ リスクの可能性があると考えられます。

危険性のある場所に置かれたプロジェクト項目

.targets ファイルに含まれる、他の面では安全な一部の項目は、ユーザー定義のプロジェクト プロパティを使用してそのパスを設定します。項目が重要なファイルを上書きするのを防ぐために、プロジェクト ファイルに含まれる項目のパスが次のいずれかの場所またはそのサブディレクトリと評価される場合、そのプロジェクト ファイルはセキュリティ リスクの可能性があると考えられます。ただし、ソリューション ファイルまたはプロジェクト ファイルのディレクトリ内またはその下位にも存在する場合は除きます。

  • いずれかのドライブのルート ディレクトリ。

  • Windows ディレクトリ (C:\Windows\ など)。

  • Program Files ディレクトリ (C:\Program Files\ など)。

参照

概念

MSBuild

その他の技術情報

MSBuild リファレンス

MSBuild の概念