WebサイトやWebアプリを作成するに当たってセキュリティ対策ははもっとも大事な要素の一つです。
Webサイトに脆弱性があると不利益があるばかりか、取り返しのつかない事態にもなり得るので、大事になってきます。
あの仮想通貨運営業者のzaifがセッション情報を盗まれたことでBTCを盗まれかけたという情報もあります。
http://blog.clock-up.jp/entry/2016/11/04/cookie-httponly
今回はcookieにおけるhttponlyについて、備忘録的な感じで残しておきます。
httpクッキーとは
まずは、httponlyを理解する前にHTTPクッキーの説明をします。
HTTPクッキーとは、HTTP経由でのみアクセスできる(Javascript経由ではアクセスできない)クッキーのことです。
chromeのデベロッパーツールを開き、Apprication>cookieで確認して見ましょう。
下の画像の画面の様になります。
赤枠で囲った部分にチェックが入っていれば、HTTPクッキーがtrueになっているということです。
デベロッパーツールのconsoleのタブより、
1 |
document.cookie |
を実行してみると、
1 2 |
_ga=GA1.2.844452153.1507899146; |
の様なクッキー情報にアクセスできますがHTTPクッキーにチェックマークが入っている情報にはアクセスできていないことがわかります。
実際に試して見てください。
JavaScriptはブラウザ上で実行できるので、HTTPクッキーがfalseであれば悪意ある攻撃者によるクロスサイトスプリプディングによるクッキー盗聴が行われてしまいます。
phpでhttponlyを設定する
httponlyはクッキーにおけるHTTPクッキーを有効にするための設定です。
httpでしか送信されないCookieということではないので気をつけましょう。
また、デフォルトはfalseとなっています。
例えば、PHPではsetcookie()関数の属性でtrueを指定すると有効になります。
サンプルコードは以下になります。
setcookie()の第7引数でtrueを指定しています。
実行結果を確認しましょう。

HTTPクッキーがtrueになっていることがわかります。
これでクロスサイトスクリプティングなどのJavaScriptの脆弱性を未然にカバーできることになるので、セキュリティを高めたいcookie情報にはhttponlyを付与するように実装したいですね。