Apache Auth Cookie Fu を使ってみた
- Date
- 2007-06-04 (Mon)
- Category
- Web
ちょっと興味があったので、触ってみた。
用意した環境
- CentOS 4 (Kernel 2.6.9-42.0.10)
- Apache 2.2.4
書いたコード
httpd-cookiefu.conf
<Directory /htdocs/cookie/apple> AuthCookieEnable on # AuthCookieDenyAction redirect # AuthCookieRedirectURL http://www.apple.com/ # AuthCookieCheckIP no AuthCookieCheckExpire yes # AuthCookieCookieName ACF # AuthCookieCookieSalt "!Open Sesame!" </Directory>
index.html
<h2>No Cookie</h2> <div id="nocookie"> <iframe src="faces/text.html?" width="700" height="200" style="border:1px solid #999"></iframe> </div> <h2>Cookie</h2> <div id="nocookie"> <iframe src="apple/text.html?" width="700" height="200" style="border:1px solid #999"></iframe> </div>
faces/text.html は人の顔がいっぱい並んだページで、顔写真はすべて faces ディレクトリ以下に並んでいます。apple も同様。
hash_hmac.php
$expire = time() + (3600 * 24) ;
$remoteip = $_SERVER["REMOTE_ADDR"];
$key = '!Open Sesame!';
$message = "$expire,$remoteip";
$hmac = hash_hmac('sha1', $message, $key);
trigger_error("$expire, $remoteip, $key, $message, $hmac", E_USER_NOTICE);
$name = 'ACF';
setcookie ( $name, $hmac, $expire, '/');
想定されるユーザシナリオは…
- index.html にアクセス → 顔は見られる。リンゴは forbidden
- hash_hmac.php にアクセス → クッキーを焼く
- index.html にアクセス → 顔は見られる。リンゴも見られる。
なのですが、今のところ何度やってもリンゴが見られません…
cookie を焼く PHP のコードは会ってると思います。試しに以下のようなコードを書きました。
hmac_test.php
$expire = 1178442572;
$remoteip = '192.168.1.9';
$key = '!Open Sesame!';
$message = "$expire,$remoteip";
$hmac = hash_hmac('sha1', $message, $key);
trigger_error("$expire, $remoteip, $key, $message, $hmac", E_USER_NOTICE);
この出力は Apache Auth Cookie Fu module のページにあるように 5719b9e205cc63d896184c79ced2dd35a3702c18 となっています。
というわけで、apache 側、というか cookie の handling に問題があるのだと思うのだけど…
確認している問題
- アクセス制限のあるページをクッキーなしに見ようとすると、Apache が Segment Fault で落ちる。→一度クッキーを焼くと、Forbidden になる。
- アクセス制限があっても、Options Indexes があると、ファイルの一覧が見られる。
もうちょっと調べてみます。
Comment:7
- yamaz:2007-06-04 (Mon) 17:37
-
ちょっと調べてみます。
- tksh:2007-06-05 (Tue) 00:40
-
ありがとうございます。僕もちらっとソースコードを眺めて、コメントアウトを外してログ取りくらいはできそうなかんじだったので、明日また少しやってみます。
- yamaz:2007-06-19 (Tue) 09:08
-
こんにちは.すごく遅くなりましたが,対応版を作りました。まだ入用でしたらこちらを試してもらえますか?
http://scaleout.jp/tmp/mod_auth_cookie_fu-0.003.tar.gz
バージョンがあり得ないくらい戻ってて,復旧に時間がかかってしまいました...
- yamaz:2007-06-19 (Tue) 11:48
-
> アクセス制限があっても、Options Indexes があると、ファイルの一覧が見られる。
これですが,
Options -Indexes
で対応してもらえますか?もっとうまい方法があるかもしれませんが,
Options indexesはcore機能でindexingの前に認証を割り込ませる方法がちょっと分からなかったです. - tksh:2007-06-19 (Tue) 14:34
-
新しいバージョンを早速試してみました。
|| アクセス制限のあるページをクッキーなしに見ようとすると、
|| Apache が Segment Fault で落ちる。
|| →一度クッキーを焼くと、Forbidden になる。この件は直ってました。ありがとうございます!!
Options の件は了解しました。
ただまだ Cookie を焼いても 403 か 302 が出ますね… valid_cookie 内部から ap_log_error でちょっと確認してみます。が、ちょっと今日は時間がないのでまた今週中くらいにでも。
ちょっと疑問なのは1回のアクセスで ConfigDump が2〜3回出てるんですよね。必ず最後の行が、設定された内容で、最初の1〜2回はデフォルトの内容で出ます。
- No Name:2007-06-19 (Tue) 19:34
-
うーん.ちなみに下記URLで焼いたCookieをそのまま持っていくとどうなりますか?
http://www.scaleout.jp/so/test/cookie_write
> ちょっと疑問なのは1回のアクセスで ConfigDump が2〜3回出てるんですよね
これはAP_INIT_*で定義されたConfig系の関数が複数回呼ばれるということでしょうか?
- tksh:2007-06-19 (Tue) 22:59
-
今は環境がないのですぐ試せません。明日やってみます。
|| > ちょっと疑問なのは1回のアクセスで ConfigDump が
|| > 2〜3回出てるんですよね
||
|| これはAP_INIT_*で定義されたConfig系の関数が複数回呼ばれるということ
|| でしょうか?auth_cookie_fu_handler でコメントアウトされていた5カ所 の ap_log_error を有効にして Apache のエラーログを見ていたら、『ConfigDump が2〜3回出て』いました。実際に読んでいるのは1ページだけなのに、auth_cookie_fu_handler はそれだけ呼ばれていた、という事だと思いますが、これもまた明日もう一度確認してみます。
Trackback:0
- TrackBack URL for this entry
- http://blogs.grf-design.com/mt/mt-tb.cgi/214
- Listed below are links to weblogs that reference
- Apache Auth Cookie Fu を使ってみた from The Croton