Cookieのhttponlyを検証する
この記事の続きです
生のCookieが簡単に参照できることがわかったので、 本記事ではhttponlyが指定されているcookieがJavaScriptから読み出せないことを検証します。 まずhttponlyが設定されているクッキーのあるホストを探してみました。
select host_key,name,secure,httponly from cookies where httponly = 1
wikipediaのクッキーが出てきました
host_key | name | secure | httponly |
---|---|---|---|
ja.wikipedia.org | WMF-Last-Access | 1 | 1 |
wikipadiaらしきクッキーを全部出してみます
select host_key,name,secure,httponly from cookies where host_key like "%wikipedia.org%"
host_key | name | secure | httponly |
---|---|---|---|
ja.wikipedia.org | CP | 1 | 0 |
ja.wikipedia.org | WMF-Last-Access | 1 | 1 |
.wikipedia.org | WMF-Last-Access-Global | 1 | 1 |
ja.m.wikipedia.org | CP | 1 | 0 |
ja.m.wikipedia.org | WMF-Last-Access | 1 | 1 |
.wikipedia.org | GeoIP | 1 | 0 |
実際にwikipediaのページを開いて開発者コンソールでスクリプトを使ってクッキーを参照します。
>document.cookie "GeoIP=JP:13:Tokyo:<IPアドレスっぽいので伏せます>; CP=H2"
想定どおりhttponlyがついていないGeoIPとCPのみが表示される結果となりました。 httponlyの付いているWMF-XXXX系のcookieはJavaScriptからは取得できませんでした。
余談ですがsecure属性がついているクッキーはhttpsでしか読み出せませんが、Wikipediaにhttpで接続する方法がよくわかりません。