これは、ISAPI フィルタです




リンク
sISAPILocation


はじめに
HTTP リクエスト・メッセージ中の「NULL(0x00)」と「%00」を以下のように改変します。

sISAPInull と Windows Server 2003 SP2 日本語版 (x86)
2008/04/22
なぜか、自宅サーバの Windows Server 2003 SP2 日本語版でロードされない...
元々、Read_Raw_Data イベントのある ISAPI フィルタは、IIS のルートに登録しないとロードしないようなクセのあるもののようだけど...


WindowsServer2003 では以下のイベントログが出力されて登録できないようです。
2008/09/29
フィルタ '****\sISAPInull.dll' を読み込もうとしましたが、これには SF_NOTIFY_READ_RAW_DATA フィルタ通知が必要です。 この通知はワーカー プロセスの分離モードでサポートされていません。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。


WindowsServer2008 では以下のイベントログが出力されて登録できないようです。
2008/09/29
フィルタ '****\sISAPInull.dll' を読み込もうとしましたが、これには SF_NOTIFY_READ_RAW_DATA フィルタ通知が必要です。この通知は、このバージョンの IIS でサポートされていません。



使用方法
  1. sISAPInull.dll を好きなディレクトリへ配置
  2. IIS の管理画面から、ISAPI フィルタのプロパティで、本 DLL を登録
  3. IIS を再起動



IIS6.0 の場合
IIS5.0 までは「SYSTEM」の実行権限があればロードできるはずです。
IIS6.0 では、それではロードできません。
一応、「Everyone」の実行権限を本 DLL に与えればロードできますが...

IIS6.0 が ISAPI フィルタをロードする時の実行ユーザが誰であるかご存知の方は教えてください。



IIS7.0 の場合
Read_Raw_Data イベントの ISAPI フィルタには互換性に問題があるようです。
リンク:このあたりの ISAPI に関する記述


仕様 (ver1.0.0.0 まで)
MFC の OnReadRawData イベントで、PHTTP_FILTER_RAW_DATA pRawData->cbInData 中の「NULL(0x00)」と「%00」を検索して置換を実施しているだけ。


仕様 (ver1.0.0.1 まで)
MFC の OnReadRawData イベントで、PHTTP_FILTER_RAW_DATA pRawData->cbInData 中の「NULL(0x00)」と「%00」と「[%|\][u|U]0000」を検索して置換を実施しているだけ。


Java Servlet Filter 版
友人が、こちらでで公開している
Apache の場合
mod_rewrite や mod_security で対応できるでしょう


アンインストール方法
  1. IIS から、ISAPI フィルタの登録を解除
  2. DLL を削除する



開発環境など
MS VC++ ver6.0 SP6 ISAPI Wizard にて作成。

免責など
著作権はとりあえず保持します。
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。

DownLoad(sISAPInull.lzh as 47,517byte) (sISAPInull.lzh.base64)
sISAPInull.dll is 24,576byte(ver1.0.0.1)


変更履歴



to do list



mail to active@window.goukaku.com