業務の中で脆弱性の対応をすることとなり、Cookie系の修正が多かったためCookieについてまとめた記事を投稿いたします。
【Cookieのやりとり】
webサーバーに接続してきたブラウザに対して、ブラウザに保存してほしい内容をCookieとして送ります。
ブラウザに保存しておいたCookieは次にwebサーバーに接続する際に送信することで、webサーバーが
送ってきたブラウザを識別することができます。
【メッセージヘッダーの利用】
Cookieの送信には「メッセージヘッダー」が利用される
WebサーバーはHTTPレスポンスに「Set-Cookie」ヘッダーを含めることでCookieを送信できる
WebブラウザはHTTPリクエストに「Cookie」ヘッダーを含めることで送信できる
「Set-Cookie」ヘッダーにはオプションで以下のようなことが設定できる
・Cookieの有効期限
・HTTPSのみを利用してCookieを送信する設定
【セッションCookie】
有効期限が未設定のCookieは、Webブラウザが閉じられると同時に削除される
このようなCookieを「セッションCookie」と呼ぶ。
一方で有効期限が設定されたCookieは、Webブラウザを閉じても削除されず、
有効期限がくるまでWebブラウザ上に残ります。
【Cookieで利用されるヘッダーフィールド】
名前 |
内容 |
種別 |
Set-Cookie |
状態を保持・管理するための情報(Cookie) |
レスポンスヘッダーフィールド |
Cookie |
Webサーバーから受け取ったCookieの値 |
リクエストヘッダーフィールド |
【Set-Cookieヘッダーフィールドに記述する属性】
属性 |
内容 |
name=value |
Cookieに付ける名前とその値(必須) |
expire=date |
Cookieの有効期限、この属性がない場合はWebブラウザを閉じるとCookieは削除される |
max-age=seconds |
Cookieの残存時間を秒数で指定 |
secure |
HTTPSで通信している場合にのみCookieを送信 |
httponly |
JavascriptからのCookieへの参照制限 |
domain=DOMAIN_NAME |
Cookieが利用されるドメイン名 |
path=PATH |
Cookieが利用されるサーバー上のパス |
【設定したSet-Cookieを確認する方法】
(1)Chromeにて検証ツールを開く
(2)その後上部のメニューから「アプリケーション」を選択
(3)左のサイドメニューから「Cookie」のメニューを開き、URLをクリックする
(4)それぞれのSet-Cookieに設定されている「secure」「httponly」「same_site」等が確認できる