ページ

2009年9月4日金曜日

クッキーでドメイン=.co.jp を送ってみたら..

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

サーバに下記のような PHPプログラムをおいて自前実装(XCHTTPCookieStorage)でクッキー受取りの挙動を確認してみた。

<?php
setcookie("testname", "testvalue", 0, "/", ".co.jp");
?>
<html>
hello
</html>


上記 PHPへアクセスすると .co.jp のクッキーが送られてくる。


実行して見ると見事に?受け取れていた。
2009-09-04 05:17:22.750 CookieStorage[3498:80f] (
<NSHTTPCookie version:0 name:@"testname" value:@"testvalue"
expiresDate:@"(null)" created:@"273626241.352053"
sessionOnly:TRUE domain:@".co.jp" path:@"/"
secure:FALSE comment:@"(null)" commentURL:@"(null)" portList:(null)>
)


しかもリクエストURLは xxxx.co.jp ですらない(xxxx.jp というサイト)。つまりクッキー送出元のドメインのチェックも行われていない。試しにまったく無関係なサイト(例えば .yahoo.co.jp)を送出しても受け取っていた。

NSHTTPCookie がそこまできめ細やかなチェックはやらないか。クラスの役割を考えると妥当と言えば妥当だ。
やはりクッキーのドメインチェックは自分でやる必要がありそうだ。

チェックは受取時にすべきだろう。そうすれば送出しないし、ファイルなどへの保存もしない。

主なチェック項目はこんな感じ。
・送出元サーバのドメインとのチェック(無関係なドメインのクッキーは受け取らない)
・gTLDや .の数、その他のチェック

しかし .co.jp と.xcatsan.jp の区別をどうするか。最低限日本のドメインはいいとして海外はどうする?