DeleGate は, HTTP に限らず様々なプ ロトコルを中継してくれるプロキシサーバです. この DeleGate には, DeleGate を通過する際に情報を書き換えたり, 付け加えたり, 削除したりす る機能があります. この機能を使って, 外から来る Set-Cookie ヘッダ, 内側 から出ていこうとする Cookie ヘッダを削除することができます.
Lynx (バージョン 2.7 以上な ら確実) や Netscape Navigator (or Communicator) のバージョン 4 以上などならば, 設定を変更するだ けで簡単にクッキーを使わないようにすることができます. ならば, 何故 DeleGate でクッキーをブロックするのか? こじつけですが, 理由をいくつか 考えてみました.
DeleGate には, The Common Filter Interface for Application Level Gateway Systems (CFI) という機能があります. これは, 簡単な書式にしたがっ てルールを記述するだけで, DeleGate を通過する情報にフィルタをかけたり, HTTP に関していえばヘッダの情報を削除したりすることができます. この機 能を使って, Set-Cookie ヘッダ, Cookie ヘッダをブロックします.
まず外からやってくる Set-Cookie ヘッダをブロックするためには, DeleGate → クライアントという情報の流れに対して, 以下のような CFI スクリプトを準備します (ファイル名は ck000.cfi とします).
#!cfi Remove/Set-Cookie: Remove/Set-Cookie2:
1 行目は, このファイルが CFI スクリプトであることを示します. そして 2 行目は Set-Cookie ヘッダを, 3 行目は Set-Cookie2 ヘッダ (送ってくる サーバはありますか?) を削除します.
次に Cookie ヘッダです. これは, クライアント → DeleGate という 情報の流れに対して, 以下のような CFI スクリプトを準備します (ファイル 名は ck001.cfi とします).
#!cfi Remove/Cookie: Remove/Cookie2:
1 行目は言わずもがな. 2 行目, 3 行目でそれぞれ Cookie, Cookie2 ヘッ ダをブロックします (私の使っている Lynx/2.8rel.2 libwww-FM/2.14 は Cookie2 ヘッダを送ります).
この ck000.cfi, ck001.cfi を使って, HTTP のプロキシとして DeleGate をポート番号 8080 で起動するために, 次のようなシェルスクリプトを準備し ました. delegated や ck00?.cfi のパスは, 適当に変更して下さい.
#!/bin/sh # start delegated with ck00[01].cfi /usr/local/sbin/delegated -P8080 \ SERVER=http://-/-/ \ FTOCL="./ck000.cfi" \ FFROMCL="./ck001.cfi"
あとはブラウザで, プロキシサーバを DeleGate を動かしているマシン名 に, ポート番号を上で指定した番号にそれぞれ指定すれば, もうクッ キーを気にする必要はありません (^^;.
JavaScript を使って送られてくるクッキーは, (多分) Set-Cookie ヘッダ を使わないため, この方法では侵入を防ぐことをできないでしょう. 更に, クッキーによってブラウザに蓄積された情報を, JavaScript で利用しているペー ジの場合も, 多分 Cookie ヘッダを使っていないので, この方法ではその効力 を無効にすることはできないでしょう. ただし, それでも Cookie ヘッダをブ ロックしますので, クッキーによって蓄積された情報がサーバ側へ送り返され ることはないと思うので, 実害はないでしょう. 気になるときは, JavaScript を理解しないブラウザを利用するか, ブラウザの設定で JavaScript を無効に して下さい.
おたより, お待ちしています
Copyright (C) 1999, 2000 Masahiro SATO