まえがき
2年ほど前に調べたcookieの操作可能範囲。
発掘したので、そのままぺたり。
操作手段はJavaScript。
参考
- http://www.imymode.com/exp/cookie.html
- https://qiita.com/uryyyyyyy/items/1c32afea4240a14d57e4
- https://blog.tokumaru.org/2011/10/cookiedomain.html
- https://triple-underscore.github.io/RFC6265-ja.html#section-4.1.2.3
前提
cookieのpath指定はすべて「/」である。
cookieの読み書き範囲の調査
■ トップドメイン(.com, .jp等)で指定してcookie付与は不可
document.cookie = "_testsunTop=hogehoge; path=/; domain=.com;";
=> 付与できない
■ ドメインで指定してcookieを付与した場合、指定した階層以下からは参照可能
参照可否
同一 | 上位 | 下位 |
---|---|---|
〇 | × | 〇 |
現在の場所 test.aaa.domain.com
document.cookie = "_testsun=ttttt; path=/; domain=.aaa.domain.com;";
参照可能範囲
test.aaa.domain.com
tttt.aaa.domain.com
aaa.domain.com
参照不可
domain.com
■ 現在いる場所のドメインと指定するドメインの場所が異なる場合、書き込み不可
現在の場所 test.aaa.domain.com
document.cookie = "_testsunAno=anotherdomain; path=/; domain=.tttt.aaa.domain.com;";
■ ドメインを指定せずにcookieを書き込むと、そのドメインからしか見ることができない
現在の場所 aaa.domain.com
document.cookie = "_testsunNoSetDomain=foobaa; path=/;";
- 設置場所
aaa.domain.com
- サブドメイン
test.aaa.domain.com
【IEの場合】、ルートドメインでcookieが発行されるとサブドメインまで読み込むことができる。
① root.com/hogehoge.htmlで以下のように設定
document.cookie = "_sun_tes_no_set_domain=noDomain; path=/";
document.cookie = "_sun_tes_no_priod=setNoDomain; domain=root.com; path=/";
document.cookie = "_sun_tes_set=setDomain; domain=.root.com; path=/";
② sub.root.com/fugafuga.htmlでcookieを確認すると、すべての値を確認可能。
削除のことば
expires=Thu, 01 Jan 1970 00:00:00 GMT