カスタム コントロール デザイナ コンポーネントの保護
更新 : 2007 年 11 月
多くのカスタム ASP.NET Web サーバー コントロールには、コントロールのデザイン時のレンダリング機能と編集機能を提供する、対応するデザイナ コンポーネントがあります。コントロールがデザイン ビューの場合、デザイナ コンポーネントはプロパティの変更を処理すると共に、デザイン ホスト (例 : Visual Studio 2005) 向けに HTML をレンダリングします。デザイン時には、カスタム コントロールのデザイナ コンポーネントはデザイン ホストと同じ信頼レベルで実行します。デザイナ コンポーネントでは、データベースへのアクセス、リモート サーバー上の Web サイトの呼び出し、開発者のコンピュータに対するファイルの作成と書き込み、電子メールの送信、他のアセンブリに含まれるコードの実行を行うことができます。
このトピックでは、コントロール デザイナ機能のセキュリティを強化するうえで役立つ推奨手順について説明します。
コーディングと構成の推奨手順を使用すると、アプリケーションのセキュリティを向上できますが、Microsoft Windows やインターネット インフォメーション サービス (IIS: Internet Information Services) の最新のセキュリティ更新プログラムと共に、コンピュータにインストールした市販のカスタム コントロール パッケージを使用して、アプリケーション サーバーを常に最新の状態に維持することも大切です。
安全なコードの記述およびアプリケーションのセキュリティ保護に関する推奨される手順の詳細については、『Writing Secure Code』(Michael Howard および David LeBlanc の共著)、または Microsoft Patterns and Practices 提供のガイダンスを参照してください。
カスタム コントロール ユーザーの問題
不明なソースからのカスタム コントロールは、コンピュータから Web に重要情報を公開したり、デザイン時に悪意あるコードを実行したりするデザイナを含む可能性があることに注意してください。また、コード アクセス構成を使用してコントロール デザイナのアクセスを制限できません。これは、コントロール デザイナは常に完全に信頼されたデザイン ホストで実行する必要があるためです。信頼レベルの詳細については、「ASP.NET 信頼レベルとポリシー ファイル」を参照してください。
カスタム コントロール開発者の問題
クラスおよびメンバの構成属性を使用してアクセス許可をコントロールの機能に必要な最低レベルに制限する方法は、実際にはデザイナ コンポーネントではうまく行きません。これは、デザイナ コンポーネントを完全に信頼されたデザイン ホスト内で実行する必要があるためです。
可能な場合は、ランタイム コントロールのプレビューでは、データベースから重要情報を使用するのではなく、常にサンプルのデータ構造を使用してデータを作成します。
デザイン ホスト開発者の問題
Visual Studio 2005 などのデザイン ホストの開発者は、HTML マークアップ、テキスト、およびデザイナから返されたその他のデータのセキュリティ リスクをチェックしてからそれらを表示する必要があります。また、HTML マークアップ文字列およびデザイナ領域のサイズを管理しやすい大きさに制限します。HTML 整合性チェックの詳細については、「ASP.NET Web ページにおけるユーザー入力の検証」を参照してください。