2004-09-16 [長年日記]

_1 [Security] Cookie の path の扱い

w3m や w3mmee で、クッキーを使ったウェブアプリケーションの実験をしていてちょっとはまりました。

http://www.example.com/hoge/

で発行した Cookie に path 属性を指定しなかったとき、w3m や w3mmee では path が '/hoge' として記録されるので、例えば

http://www.example.com/hoge2/

に対してもその Cookie を渡そうとしていました (前方一致でマッチさせるから)。

一方 Mozilla では、同様の時に path が '/hoge/' として記録されるので、この問題はおきません。

RFC2109 では、User-Agent 側の役割として

Path   Defaults to the path of the request URL that generated the
       Set-Cookie response, up to, but not including, the
       right-most /.

とありますが、この 'the path of the request URL' というのが '/' で終るべきなのかどうなのかよくわかりません。ただ、Example の中で

1.  User Agent -> Server

    POST /acme/login HTTP/1.1
    [form data]

    User identifies self via a form.

2.  Server -> User Agent

    HTTP/1.1 200 OK
    Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"

    Cookie reflects user's identity.

と書いてあるくらいなので、上記のような問題が起きるのは本来当り前で、Moailla の実装が気を効かせてくれているだけなのでしょうか?

本日のツッコミ(全2件) [ツッコミを入れる]
_ yohgaki (2004-09-17 11:12)

Mozillaの実装でないと困ったことになることが多いですよね。rfc2396のpathの定義は"/"で終わる事にになっていないのでw3mの方が正しいのかも知れませんが...

(mixiって不精な私にはRSSリーダのように使えて便利ですね。

_ gotoyuzo (2004-09-17 16:07)

http://wp.netscape.com/newsref/std/cookie_spec.htmlには「The path "/foo" would match "/foobar" and "/foo/bar.html".」とあります。

[]