作成者: Robert McMurray
クラシック ASP で親パスを使用すると、開発者はファイルやフォルダーへのパスに ".." を含む相対アドレスを使用できます。 たとえば、次のコード抜粋は、親パスをマップする ASP ページを示しています。
<%
Response.Write Server.MapPath("../example.asp")
%>
さらに、次のコード抜粋は、親パスを使用するフォルダー内のインクルード ファイルを参照する ASP ページを示しています。
<!--#include file="../_fpclass/fpdblib.inc"-->
以前のいくつかのバージョンの IIS では、親パスが既定で有効になっていました。 IIS 6.0 では、既定の動作が変更になり、親パスは既定で無効になりました。これはセキュリティと設計上の理由から行われました。親パスの実行を防ぐことにより、セキュリティやアプリケーションの境界を越えてコンテンツが含まれるのを防ぐことができます。 既定では、クラシック ASP スクリプトのエラー メッセージは Web ブラウザーに送信されず、親パスを使用しようとすると、次のエラー メッセージが Web ブラウザーに返されます。
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator, please click here to find out more about this error.
(Note: The ASP script error message listed above may be customized. For more information, see the Classic ASP script errors are no longer shown in a Web browser by default topic.)
ASP スクリプトのエラー メッセージ送信を有効にし、クラシック ASP スクリプトで親フォルダー内のパスをマップしようとすると、Web ブラウザーに次のエラー メッセージが表示されます。
Server.MapPath() error 'ASP 0175 : 80004005'
Disallowed Path Characters
/test/example.asp, line 100
The '..' characters are not allowed in the Path parameter for the MapPath method.
クラシック ASP スクリプトで、IIS に親パスを使用するページを含めようとすると、Web ブラウザーに次のエラー メッセージが表示されます。
Active Server Pages error 'ASP 0131'
Disallowed Parent Path
/test/example.asp, line 100
The Include file '../_fpclass/fpdblib.inc' cannot contain '..' to indicate the parent directory.
ユーザー アクセス制御の操作
完全な管理アクセス許可が付与されたアカウントを使用して、このドキュメントの手順に従う必要があります。 そのためには、次の 2 つの方法のいずれかを使用します。
- ローカルの管理者アカウントを使用してコンピューターにログインします。
- ローカルの管理者アカウントではない管理アクセス許可を持つアカウントを使用してログインしている場合は、[管理者として実行] オプションを使用して、すべてのアプリケーションとすべてのコマンド プロンプト セッションを開きます。
上記の条件が必要となる理由は、Windows Vista と Windows Server 2008 のユーザー アカウント制御 (UAC) セキュリティ コンポーネントにより、IIS 構成設定への管理アクセスが妨げられるためです。 UAC の詳細については、次のドキュメントを参照してください。
親パスの問題の解決
仮想パスの使用
ASP コードで親パスを使用する代わりに、仮想パスを使用できます。 仮想パスでは、Web サイトの URL ルートからの完全なフォルダー パスを入力する必要があります。 次に例を示します。
マッピング パス:
<%
Response.Write Server.MapPath("/test/example.asp")
%>
インクルード パス:
<!--#include virtual="/_fpclass/fpdblib.inc"-->
ASP 親パスの有効化
IIS マネージャーを使用して、親パスを有効または無効にすることができます。 これを行うには、IIS マネージャーを開き、親パスを構成したいサイトまたはアプリケーションに移動して、[ASP] 機能をダブルクリックします。
ASP 機能の一覧で、[親パスを有効にする] オプションを構成します。
この設定は、AppCmd.exe コマンド ライン ツールを次の構文で使用して構成することもできます。
appcmd.exe set config "Default Web Site" -section:system.webServer/asp /enableParentPaths:"False" /commit:apphost
その他の情報
クラシック ASP で使用できるオプションの詳細については、Microsoft IIS.net Web サイトの IIS 構成リファレンスに含まれる次のページを参照してください。
IIS の親パスの詳細については、Microsoft サポート技術情報の次のページを参照してください。
IIS 6.0 で親パスの有効化は既定で無効である