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

ASP.NET の正規化の問題をプログラムによって確認する方法

はじめに
この資料では、ASP.NET アプリケーションの保護機能をさらに強化し、正規化に関する一般的な問題を防止する方法について説明します。
詳細

正規化とは

正規化とは、同じ意味を持つさまざまな形式の名前を、"正規" 名とも呼ばれる、単一の共通の名前で処理することです。たとえば、特定のコンピュータ上で、c:\dir\test.dat、test.dat、および ..\..\test.dat という名前のファイルが同一のファイルを参照している場合があります。正規化ではこのような場合に、このファイルに c:\dir\test.dat のような名前が割り当てられます。

URL が Web サーバーで受信されると、サーバーでは、その要求にファイル システム パスが割り当てられ、応答が決められます。要求を割り当てるのに使用される正規化ルーチンでは、URL を正しく解析して、予期しない内容の提供や処理を回避する必要があります。正規化の詳細については、次のマイクロソフト Web サイトを参照してください。推奨事項に従って、アプリケーションを保護することをお勧めします。関連情報については、以下の情報を参照してください。

Web アプリケーションに正規化の問題に対する保護機能を追加する

Microsoft ASP.NET の開発者は、チェック項目を追加して Web アプリケーションの正規化に関する問題を減らすことができます。これを行うには、Application_BeginRequest イベント ハンドラを Global.asax ファイルに追加します。Global.asax ファイルは、Web アプリケーションのルート ディレクトリに格納されています。このイベント ハンドラは、Web 要求ごとに実行されます。このイベント ハンドラにコードを追加することにより、正規化の問題に対する保護機能を強化することができます。

サンプル コード

次のサンプル コードでは、Application_BeginRequest イベント ハンドラを Global.asax ファイルに追加する方法を例示します。このイベント ハンドラは、パスの検証を実行することで無効な文字や不審な URL を防ぎます。これにより、正規化に関する一般的な問題を回避できます。

Global.asax のサンプル コード (Visual Basic .NET 用)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)    If (Request.Path.IndexOf(chr(92)) >= 0 OR _        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then        Throw New HttpException(404, "Not Found")    End IfEnd Sub</script>

Global.asax のサンプル コード (C# 用)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {    if (Request.Path.IndexOf('\\') >= 0 ||        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {        throw new HttpException(404, "not found");    }}</script>

免責

「サポート技術情報」 (Microsoft Knowledge Base) に記載されている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。Microsoft Corporation およびその供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含むすべての損害に対して、状況のいかんを問わず一切責任を負いません (Microsoft Corporation またはその供給者がかかる損害の発生可能性を了知している場合を含みます)。結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 887459 (最終更新日 2004-10-19) を基に作成したものです。

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

文書番号:887459 - 最終更新日: 12/03/2007 18:52:40 - リビジョン: 2.4

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

  • kbsecurity kbtshoot KB887459
フィードバック
&t=">