
より安全な Windows フォーム アプリケーションの開発
セキュリティは、アプリケーション開発のすべての段階において重要です。「安全なコーディングのガイドライン」を確認し、その内容に従って開始してください。
次に、アプリケーションを完全信頼で実行するか、部分信頼で実行するかを決定します。アプリケーションを完全信頼で実行すると、ローカル コンピュータ上のリソースにアクセスしやすくなります。ただし、「安全なコーディングのガイドライン」に厳密に従ってアプリケーションのデザインと開発を行わないと、アプリケーションとユーザーのセキュリティ リスクは高くなります。アプリケーションを部分信頼で実行すると、安全なアプリケーションが開発しやすく、リスクも低くなります。ただし、何か機能を実装する場合により細かい計画が必要になります。
部分信頼を選択した場合 (つまり、"インターネット" または "イントラネット" のアクセス許可セットの場合)、この環境のアプリケーションが実行できる内容を決定します。Windows フォームには、信頼度の低い環境で機能を実装するために、より安全な代替手段が用意されています。部分信頼環境と完全信頼環境を区別して、アプリケーションの一部 (データ アクセスなど) をデザインし、記述することもできます。アプリケーション設定など、一部の Windows フォーム機能は、部分信頼で機能するように設計されます。詳細については、「アプリケーション設定の概要」を参照してください。
部分信頼で許可しているよりも高度なアクセス許可が必要でも、完全信頼では実行できない場合、必要なアクセス許可のみを追加で与えて、部分信頼で実行できます。たとえば、部分信頼で実行し、ユーザーのファイル システムにあるディレクトリへ読み取り専用のアクセスをアプリケーションに認める場合、そのディレクトリで、FileIOPermission のみを要求できます。この手法を正しく使用すると、アプリケーションの機能を増やし、ユーザーのセキュリティ上のリスクを最小限に抑えることができます。
部分信頼で実行されるアプリケーションを開発するときは、アプリケーションをどのアクセス許可で実行する必要があるか、オプションでどのアクセス許可を使用できるようにするかについて、注意してください。すべてのアクセス許可が明らかになったら、アプリケーション レベルでアクセス許可に対する宣言的な要求を実行します。アクセス許可を要求することにより、.NET Framework ランタイムに対して、アプリケーションが必要とするアクセス許可およびアプリケーションが明示的に必要としないアクセス許可が通知されます。アクセス許可の要求の詳細については、「アクセス許可の要求」および「アクセス許可要求」を参照してください。
オプションのアクセス許可を要求するときには、アプリケーションに与えられていないアクセス許可を必要とする処理をアプリケーションが実行したときに発生するセキュリティ例外を処理する必要があります。SecurityException を適切に処理することで、アプリケーションが動作を確実に継続できるようになります。アプリケーションは、例外を使用して、特定の機能をユーザーに対して無効にする必要があるかどうかを決定できます。たとえば、アプリケーションは、必要なファイル アクセス許可が与えられていない場合に [上書き保存] メニュー オプションを無効にできます。
適切なアクセス許可をすべて与えたかどうかを確認するのは困難なこともあります。たとえば、表面的には問題のないようなメソッドの呼び出しでも、実行時のある時点でファイル システムにアクセスすることがあります。また、必要なアクセス許可すべてがアプリケーションに与えられていない場合、デスクトップでデバッグするときにはテストが成功しても、実際に配置すると失敗することがあります。.NET Framework 2.0 SDK と Visual Studio 2005 のどちらにも、アプリケーションに必要なアクセス許可を計算するツール (MT.exe コマンド ライン ツール、Visual Studio の "アクセス許可の検出" 機能) が含まれています。
その他の Windows フォームのこれらのセキュリティ機能について、次のトピックで説明しています。
| トピック | 説明 |
| | 部分信頼環境でファイルとデータにアクセスする方法について説明します。 |
| | 部分信頼環境で印刷機能にアクセスする方法について説明します。 |
| | 部分信頼環境におけるウィンドウ操作の実行、クリップボードの使用、およびアンマネージ コードの呼び出しについて説明します。 |
適切なアクセス許可でアプリケーションを配置する方法
Windows フォーム アプリケーションをクライアント コンピュータに配置する最も一般的な方法は、ClickOnce という、アプリケーションで実行するコンポーネントすべてを記述する配置テクノロジです。ClickOnce は、マニフェストという XML ファイルを使用し、アプリケーションを構成するアセンブリとファイル、およびアプリケーションに必要なアクセス許可を記述します。
ClickOnce には、クライアント コンピュータで高いレベルのアクセス許可を要求する 2 つのテクノロジがあります。どちらのテクノロジも、Authenticode 証明書の使用に依存しています。この証明書は、アプリケーションが信頼できる送信元から送信されたということをある程度保証します。
これらのテクノロジについて次の表で説明します。
| 高いレベルのアクセス許可テクノロジ | 説明 |
| アクセス許可の昇格 | アプリケーションを初めて起動すると、セキュリティ ダイアログ ボックスが表示されます。[アクセス許可の昇格] ダイアログ ボックスにはアプリケーションの発行元が表示されるため、その情報に基づいて、アクセス許可の追加を認めるかどうかを決定できます。 |
| 信頼されたアプリケーションの配置 | システム管理者が、クライアント コンピュータで発行元の Authenticode 証明書を 1 回だけインストールします。以降、このローカル コンピュータでは確認が表示されず、この証明書で署名済みのアプリケーションは信頼できると見なされ、完全信頼で実行されます。 |
選択するテクノロジは、配置環境によって異なります。詳細については、「ClickOnce 配置ストラテジの選択」を参照してください。
既定では、Visual Studio または .NET Framework 2.0 SDK (Mage.exe と MageUI.exe) を使用して配置された ClickOnce アプリケーションは、完全信頼を受けているクライアント コンピュータ上で実行するように構成されます。部分信頼または何らかのアクセス許可を追加してアプリケーションを配置する場合、この既定を変更する必要があります。この場合、配置を構成するときに Visual Studio または .NET Framework 2.0 SDK ツールの MageUI.exe を使用します。MageUI.exe の使用法の詳細については、「チュートリアル : ClickOnce アプリケーションを手動で配置する」を参照してください。詳細については方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する.
ClickOnce とアクセス許可の昇格のセキュリティの詳細については、「ClickOnce の配置とセキュリティ」を参照してください。信頼されたアプリケーションの配置の詳細については、「信頼されたアプリケーションの配置の概要」を参照してください。
アプリケーションのテスト