現在オフラインです。再接続するためにインターネットの接続を待っています

ASP.NET の正規化の問題を確認する HTTP モジュール

概要
ユーザーによる ASP.NET アプリケーションの保護を支援するため、マイクロソフトは正規化の問題の最適な対応策を実装した HTTP モジュールを公開しました。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887459 ASP.NET の正規化の問題をプログラムによって確認する方法
ASP.NET のバージョンを確認する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
318785 .NET Framework に Service Pack がインストールされているかどうかを確認する方法
ASP.NET における正規化の問題の詳細については、次のマイクロソフト Web サイトを参照してください。
現象
Web サーバーは URL を受信すると、その要求にファイル システム パスを割り当て、応答を決定します。この割り当てに使用される正規化ルーチンでは、URL を正しく解析して、予期しないコンテンツの提供や処理を防ぐ必要があります。正規化の問題に対処していないと、予期しない結果が発生することがあります。正規化の詳細については、以下のマイクロソフト Web サイトを参照してください。
解決方法

Microsoft.Web.ValidatePathModule.dll - HTTP モジュール

ダウンロード情報

以下のファイルは、「Microsoft ダウンロード センター」からダウンロードできます。

ダウンロードVPModule.msi パッケージ

リリース日 : 2004 年 10 月 7 日

マイクロソフトのサポート ファイルのダウンロード方法を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトでは、アップロード時点の最新のウイルス検査プログラムを使用して、配布ファイルのウイルス チェックを行っています。配布ファイルはセキュリティで保護されたサーバー上に置かれており、権限のない第三者が無断でファイルを変更できないようになっています。

必要条件

VPModule.msi ファイルは、32 ビット版 Microsoft .NET Framework 用に設計されています。

VPModule.msi ファイルをインストールする前に、コンピュータ上の Machine.config ファイルをすべてバックアップしてください。Machine.config ファイルのバックアップ コピーを作成するには、以下の手順を実行します。
  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。[名前] ボックスに cmd と入力し、[OK] をクリックします。
  2. それぞれの Machine.config ファイルが格納されているフォルダに移動します。Machine.config ファイルは以下のフォルダにあります。<framework version number> は、システムにインストールされている Microsoft .NET Framework のバージョン番号に置き換えてください。
    %windir%\Microsoft.NET\Framework\<framework version number>\CONFIG
    たとえば、ドライブ C に .NET Framework 1.1 がインストールされている場合は、次のコマンドを入力し、Enter キーを押します。
    cd /d %windir%\microsoft.net\framework\v1.1.4322\config
  3. 次のコマンドを実行して、Machine.config ファイルのバックアップ コピーを作成します。
    copy machine.config machine.config.bak
システムにインストールされている .NET Framework のインスタンスごとに、この手順を実行します。

インストール情報

マイクロソフトは、VPModule.msi という名前のインストール パッケージをリリースしました。VPModule.msi ファイルを実行すると、システムに Microsoft.Web.ValidatePathModule.dll ファイルがインストールされます。このファイルのインストールにより、システムにインストールされている .NET Framework のすべてのバージョンで、Machine.config ファイルに HTTP モジュールの新しいエントリが追加されます。

インストール パッケージを使用するには、VPModule.msi ファイルをダウンロードし、パッケージをダブルクリックしてインストールを開始し、表示される手順を実行します。

VPModule.msi によって実行される処理

最初に Microsoft.Web.ValidatePathModule.dll という名前のファイルが抽出されます。次に、システム上に存在するすべての Machine.config ファイルに次のようなエントリが追加されます。
    <system.web>        <httpModules>            <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>        </httpModules>    </system.web>
その後、Microsoft.Web.ValidatePathModule.dll ファイルがグローバル アセンブリ キャッシュ (GAC) に追加されます。

Microsoft.Web.ValidatePathModule.dll ファイルのプログラムの動作を理解する必要のある開発者のため、以下にソース コードを掲載します。
namespace Microsoft.Web {    public class ValidatePathModule : IHttpModule {        public ValidatePathModule() {        }        void IHttpModule.Init(HttpApplication app) {            app.BeginRequest += new EventHandler(this.OnBeginRequest);        }        void IHttpModule.Dispose() {        }        void OnBeginRequest(Object source, EventArgs eventArgs) {            HttpRequest request = (source as HttpApplication).Request;            string physicalPath = request.PhysicalPath;            if (request.Path.IndexOf('\\') >= 0 || Path.GetFullPath(physicalPath) != physicalPath) {                throw new HttpException(404, "Not Found");            }        }    }}
モジュールのインストール時に使用できるコマンド ライン スイッチの詳細については、次のマイクロソフト Web サイトを参照してください。

インストールの確認についての情報

モジュールが正しくインストールされると、次のレジストリ キーが追加されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{30EFFF0C-573D-46FB-8AD5-00887289261A}
: このレジストリ キーは、この資料の「カスタム インストールについての情報」に記載されている手順で (手動で) HTTP モジュールをインストールした場合は追加されません。/a オプションを指定した場合、ファイルの展開のみが行われ、レジストリは更新されません。

アンインストール情報

モジュールのインストールによってシステムに加えられた変更を取り消すには、VPModule.msi ファイルを実行して [削除] をクリックします。または、コントロール パネルの [アプリケーションの追加と削除] を使用します。

無人インストールについての情報

これらの変更を無人モードで行うには、次のコマンドを実行します。
msiexec /i vpmodule.msi /qb-
これらの変更を無人モードで取り消すには、次のコマンドを実行します。
msiexec /x vpmodule.msi /qb-

カスタム インストールについての情報

HTTP モジュールを手動でインストールするには、以下の手順を実行します。
  1. Machine.config ファイルをすべてバックアップします。手順については、この資料の「必要条件」を参照してください。
  2. パッケージをダウンロードします。手順については、この資料の「ダウンロード情報」を参照してください。
  3. 次のコマンドを実行して、VPModule.msi ファイルから Microsoft.Web.ValidatePathModule.dll ファイルを指定の場所に展開します。
    msiexec /a vpmodule.msi
  4. 次のコマンドを実行して、モジュールを GAC にコピーします。
    gacutil -i microsoft.web.validatepathmodule.dll
    : モジュールは、指定した場所に新しく作成される "Microsoft ValidatePath Module" という名前のフォルダに展開されます。
  5. Machine.config ファイルをエディタで開き、<httpModules> セクションに次のエントリを追加します。同じエントリをすべての Machine.config ファイルに追加します。
    <add name="ValidatePathModule" type="Microsoft.Web.ValidatePathModule, Microsoft.Web.ValidatePathModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=eba19824f86fdadd"/>

既知の問題

既知の問題を以下に示します。
  • Microsoft.Web.ValidatePathModule.dll ファイルのエントリが Machine.config ファイルの <httpModule> セクションに正常に追加されていることがインストーラによって確認されます。ただし、特定の状況では、この資料の「現象」に記載されている問題が引き続き発生することがあります。

    この現象は、Web.config ファイルが存在し、Machine.config で定義されている一覧が Web.config ファイルによってクリアされる場合に発生します。たとえば、Web.config ファイルに次のようなエントリが存在すると、この現象が発生することがあります。
    <httpModules>    <clear/></httpModules>
    このような構成が行われていると、アプリケーションでは、この資料に記載されているモジュールが実行されません。通常、このような構成は、Machine.config で定義されている HTTP モジュールをアプリケーションで使用せず、一覧をクリアしてアプリケーション独自の一覧を定義する場合に使用されます。
  • .NET Framework の異なるバージョンをインストールする場合は、VPModule.msi ファイルをアンインストールした後、もう一度インストールする必要があります。
  • SQL Server Reporting Services と VPModule.msi の問題の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    887787 ASP.NET ValidatePath モジュールのインストール後、Reporting Services からエラー メッセージが表示されることがある
関連情報
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887405 Windows インストーラとグループ ポリシーを使用して Active Directory ドメインに VPModule.msi を展開する方法
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887404 Systems Management Server 2003 を使用して ValidatePath モジュールを展開する方法
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
887290 ASP.NET ValidatePath Module Scanner (VPModuleScanner.js) の使用方法
セッション状態の詳細については、次のマイクロソフト Web サイトを参照してください。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 887289 (最終更新日 2004-10-15) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。
プロパティ

文書番号:887289 - 最終更新日: 12/03/2007 18:51:50 - リビジョン: 3.5

Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1, Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.0 Service Pack 1, Microsoft .NET Framework 1.0 Service Pack 2, Microsoft .NET Framework 1.0 Service Pack 3, Microsoft .NET Framework 1.1, Microsoft .NET Framework 1.1 Service Pack 1, Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2, Microsoft .NET Framework Software Development Kit 1.0 Service Pack 1, Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2

  • kbsecurity kbtshoot KB887289
フィードバック