2009年9月10日木曜日

[IIS]IISで指定の拡張子のファイルをクライアントに見せなくする

たとえば、xmlファイルを公開フォルダ内においていた場合、
デフォルトの設定だとクライアントから要求があれば見えてしまいます。
それを見えなくする方法があります。これはIIS6.0以上のバージョンの場合です。

まず、IISを止めて%SystemRoot%\system32\inetsrv\MetaBase.xmlを開きます。
その中の<IISMimeMap>タグを見てください。

<IISMimeMap Location = "/LM/MimeMap"
MimeMap=".asx,vide/x-ms-asf
.xml,text/xml
.tsv,text/tab-separated-values
(略)
">
</IIsMimeMap>

なんて感じになっていると思います。
これの「.xml,text/xml」行を消しちゃいます。

これでOKです。

ブラウザからxmlファイルにアクセスすると 404エラーが返されると思います。
また、これは仮想ディレクトリ単位では出来ず、サイト単位でしかできないようです。


ついでにIIS5.1(XP Proとか)の場合なんですが、MetaBase.xmlが無くて、MetaBase.binというバイナリに
設定情報が書かれています。その為、直接の編集は出来ず、編集方法が良くわかりませんでした。

ですが、URLScanってツールを使うと実現できます。
これをダウンロード、インストールすると%SystemRoot%\system32\inetsrv\URLScanってフォルダに展開されています。
このファイルのURLScan.iniに見せたくないファイルの拡張子を指定することが出来ます。

Optionsセクションで、UseAllowExtensionsの値が0だとDenyExtensionsが有効、値が1だとAllowExtensionsが有効と言うこと。

[AllowExtensions] --- 見せるファイル
[DenyExtensions] --- 見せないファイル

ここのDenyExtensionsセクションに「.xml」を足してやるとクライアントから要求されても送信しない
です。

もしくはUseAllowExtensionsを1にして、見せる拡張子をひたすら書くと。
このほうが安心ですかね。メンドクサイけど。

で、こいつはIIS6でも動くみたいですね。

0 件のコメント: