IIS Insider

2003 年 6 月

IIS Insider

Internet Information Services に関してよく寄せられる質問と答え

By Brett Hill

トピック
ISAPI アプリケーションマッピングからエクステンションを削除する影響ISAPI アプリケーションマッピングからエクステンションを削除する影響
ブラウザのアドレスバーに手動でURL を入力することによって、ほかのユーザーがファイルを開くのを防ぐ方法ブラウザのアドレスバーに手動でURL を入力することによって、ほかのユーザーがファイルを開くのを防ぐ方法
HTTP ヘッダをすべてのコンテンツに作成する方法HTTP ヘッダをすべてのコンテンツに作成する方法

ISAPI アプリケーションマッピングからエクステンションを削除する影響

Q

ISAPI アプリケーションマッピングからいくつかのエクステンションを削除する場合の影響を教えてください。.htw、.idq、.cer、.cdx、asa、.htr、.idc、.shtm、.stm、.printer などを削除した場合、Web サイトのパフォーマンスまたは操作にはどのような影響がおよびますか?

A

IIS 6 を使用している場合、既定で、最初にWeb サービス拡張を構成しないでアプリケーションマッピングをインストールした場合でも、それらのアプリケーションマッピングすべてを呼び出すことができません。そのため、IIS 4 および IIS 5 では、マッピングは既定でインストールされ、有効になるため、マッピングの問題はさらに大きくなります。IIS 5 を参照している場合、アプリケーションマッピング(図1参照)は、WWW マスタプロパティのインターネットサービスマネージャコンソール、ホームディレクトリ、構成ボタンから確認することができます。

アプリケーション構成

図 1: アプリケーション構成

お気づきのように、アプリケーションマッピングを検索することと、安全に削除することができるマッピングを確認するのはまた別の話です。実際に使用していないすべてのアプリケーションマッピングを削除または無効にするのが賢明です。IIS Lockdown Wizard ツール により、このタスクを便利に行うことができます。同時に、このツールのスクリプトマップ画面により、ファイル拡張子に関連するアプリケーションが表示されます。(図 2 参照)

IIS Lockdown Wizard ツール

図 2: IIS Lockdown Wizard ツール

最も一般的に使用されるアプリケーションマッピングは、サーバー側インクルードで使用されるASP です。これらの機能が必要の場合、リストから削除しないでください。そのほかには、以下のマッピングがあります。

Index Server Web インターフェイス (.idq, .htw, .ida) - .idq および .ida はidq.dll にマップし、.htw はwebhits.dll にマップします。この 2 つのプログラムは、Windows NT 4.0 上のインデックスサーバーまたはインデックスサービスまたはWindows 2000 でクエリを行い、Web ページに結果を返します。ASP には、これと同じ機能が多く含まれており、これらの拡張子は実質上あまり使われなくなっています。これらの機能に関する詳細は以下のページをご覧ください。
http://msdn.microsoft.com/library/en-us/indexsrv/html/ixuwebov_4i0j.asp (英語)

Internet Data Connecter - この拡張子(.idc) を削除または無効にしておくことを強く推奨します。.idc 拡張子は、SQL サーバーに早く接続する方法として長い間使用されていました。インデックスサーバーエクステンションと同様に、ASP でより早く、より安全に同じ機能を実行できるため、.idc は現在あまり使われていません。

.HTR スクリプティング - ユーザーアカウントパスワードを Web ベースのアプリケーションを使用して変更するほうが容易にできる場合があります。Outlook Web Access は、このようなアプリケーションの一例です。.htr スクリプトにより、この機能が提供されます。

IISのクリーンインストールをした場合、マイクロソフトサポート技術情報 269082 「IIS の新規インストール時にIISADMPWD 仮想ディレクトリが作成されない」をご覧ください。

これは有益な機能ですが、パスワード変更サービスのために.htr ファイルを使用しないことを強く推奨します。近い将来マイクロソフトがリリースするこれらのスクリプトに代わるスクリプトをご利用ください。これと同じ機能を持つルーチンを自ら作成することもでき、それにより、ご使用のアプリケーションをより効果的に統合し、.htr dll が公にさらされるのを防ぐことができます。

もう1つの重要なポイントとして、IIS のアプリケーションマッピングを削除すると、IIS はそのマッピングをスクリプトとは認識せず、テキストとして送信するという問題があります。その結果、スクリプトマッピングを削除した場合、スクリプトエンジンによって以前に解析されているコードがテキストとしてクライアントに送信されないように、関連する拡張子を持つファイルを削除するなどの措置をとる必要があります。

インターネット印刷 - インターネット印刷は、URL を使用して、プリンタにページを送信し、印刷することができます。これにより、IIS は、インターネットまたはイントラネットで使用可能な印刷サーバーの役割を果たします。これを実現するために使用されるプロトコルは、Internet Printing Protocol (IPP 1.0) で、インターネット技術標準化委員会Internet Engineering Task Force (IETF) のプリンタワーキンググループ(PWG) によって定義されます。興味深い機能ですが、この機能はほとんど使用されていません。IIS の今後リリースされるバージョンでこの機能のサポートがなくなっていたとしても私は驚かないでしょう。この件に関する詳細は、以下のページをご覧ください。
http://msdn.microsoft.com/library/en-us/graphics/hh/graphics/inetpri_2muf.asp (英語)

ページのトップへページのトップへ

ブラウザのアドレスバーに手動でURL を入力することによって、ほかのユーザーがファイルを開くのを防ぐ方法

Q

Web プロジェクトに関してソリューションを教えていただきたいと思います。メインページから従業員のログインリンクを使用しています。従業員がログインすると、その従業員のファイルのリストが表示されるCGI Perl スクリプトへのリンクが含まれるページが表示されます。その中のファイル名をクリックし、別のウインドウでファイルを開くことができます。ここまでは問題なく機能します。

問題は、次のような点です。従業員がファイルを開く際に、Internet Explorer のURL にファイルへのパスが表示されます。すべての従業員のファイルが同じ Web サーバー上の仮想ディレクトリにあるため、別の従業員のファイルへのパスを容易に作ることができます。たとえば、誰かがファイルを開くと、そのファイルのパスは www.myserver.com/Voucher/myfile.html となります。そして、次に www.myserver.com/Voucher/yourfile.html と入力すると、別の人のファイルを開くことができてしまいます。

URL ブラウジングを無効にするディレクトリのNTFS の匿名認証を無効にすると同時にCGI がファイルを一覧表示する際に自分のファイルを開けないようにする場合、URL アドレスバーにパスを入力してファイルを開けないようにし、CGI スクリプトを介し、ファイルを開き、表示させることのみができるようにするにはどのようにしたらよいですか?

A

コンテンツが Web サイトのディレクトリストラクチャにある場合、(つまり、URL を介し、すべてにアクセスできる場合)誰かがURL を推測し、そのファイルにアクセスできる可能性があります。不正なアクセスを防ぐ1つの方法として、NTFS アクセス権でユーザーを認証し、アクセスを制御する方法があります。これにより、ユーザーが正当なURL を推測することが避けられ、アクセス権を制御することができます。ご質問の内容では、ユーザーが自分自身のファイルを開くことができない場合、アクセス権がなにかおかしいようです。特定のユーザーアカウント(またはそれらのユーザーが所属するグループ)は、最低でもそのファイルのNTFS 読み取りアクセス権が必要です。従業員は認証の後、ファイルを開くことができます。

CGI プロセスがファイルを読み取っている場合、CGI プロセスを呼び出すユーザーに、最低NTFS 読み取りアクセス権を割り当てる必要があります。www.sysinternals.com (英語) で入手可能なFilemon を使用し、NTFS アクセス権に関連するアクセス権のトラプルシューティングをすばやく行うことができます。

2 番目に、Web ディレクトリストラクチャの一部でないファイルの読み取り、送信が行われるようにCGI プロセスが記述される可能性があります。つまり、CGI スクリプトは、d:/webcontent/scripts に配置される http://severname/scripts に置かれる可能性があります。スクリプトが呼び出されると、d:/employeefiles などのディスクサブシステム上の場所からファイルが読み取られる可能性があります。d:/files にマップする仮想ディレクトリまたは Web サイトがない場合、CGI プログラムからのみアクセスすることができ、URL から直接アクセスすることはできません。CGI プログラムへの匿名アクセスを有効にしない場合、コードにより、認証されているユーザー向けのコンテンツのみがブラウザへ送られるようにすることができます。このように、CGI プログラムをバイパスし、承認されないアクセス権を取得することはできません。

ページのトップへページのトップへ

HTTP ヘッダをすべてのコンテンツに作成する方法

Q

Internet Explorer が動的コンテンツのキャッシュを行なわないようにするために、IIS 5 コンテンツの有効期限がすぐに切れるように設定しました。(図 3 参照)

既定の Web サイト プロパティ

図 3: 既定の Web サイト プロパティ

このように構成した場合、ASPファイルはIIS から以下のヘッダが追加されレンダリングされます。

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 21 May 2003 23:21:26 GMT
Connection: Keep-Alive
Content-Length: 8593
Content-Type: text/html
Cache-control: private

しかし、.gif ファイルには、これらのヘッダが送られます。

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Cache-Control: no-cache
Expires: Wed, 21 May 2003 23:22:30 GMT
Date: Wed, 21 May 2003 23:22:30 GMT
Content-Type: image/gif
Accept-Ranges: bytes
Last-Modified: Sat, 21 Aug 1999 22:34:16 GMT
Content-Length: 359

ご覧のように、Cache-Control: no-cache ヘッダおよび Expires ヘッダは .asp ファイルには含まれていません。IIS がすべてのコンテンツにこれらのヘッダを適用するようにする方法はありますか?

A

Expire Content Immediately の設定はすべてのファイルに適用されないというあなたの分析は全く正しいと言えます。Expires Content Immediately がユーザーインターフェイスで設定されている場合、これは静的なコンテンツのみに適用され、動的なコンテンツには適用されません。

この問題に対する効果的なソリューションがあります。すべてのコンテンツにヘッダを表示させる必要がある場合、カスタムヘッダを作成してください。カスタムヘッダが指定されると、それは静的、動的のいずれのコンテンツにもすべて追加されます。


関連情報

これまでの IIS Insider コラムの質問と答えの一覧は、ここをクリックしてください。

ページのトップへページのトップへ