その他

Cookieの各属性の意味を分かりやすく解説する

Cookieの各属性の意味を分かりやすく解説する

Cookieとは、ブラウザが持っているデータのことで、サーバーにリクエストを送る際に自動的に送信されます。

参考:CookieとSessionを今度こそ完全に理解する【分かりやすく図解】

 

ただ、毎回すべてのCookieが送信される訳ではなく、「URLの条件とCookieに設定してある情報が一致した場合」のみサーバーに対してCookieが送信される仕組みになっています。

 

そしてCookieに設定してある情報のことを「属性」と言い、いくつかの種類があります。

 

今回はこの属性について、それぞれの意味を分かりやすく解説します。

少しでも参考になれば幸いです。

 

Cookieの各属性の意味を分かりやすく解説する

Cookieには主に以下の属性があります。

Cookieの属性:サマリー

 

Name

Cookie名です。

ここに指定した名前でブラウザにCookieが保存されます。

Value

Cookieにセットする値です。

Name=Valueのように、Nameとセットで指定されます。

 

Expires

Cookieの有効期限です。

以下のような書式で設定されます。

Date: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT

参考:Date

 

設定しなかった場合は、セッションクッキーの寿命(ユーザーがブラウザを閉じるまで)となります。

 

また、過去の時間を指定した場合はCookieが削除されます。

 

Max-Age

Cookieの期限までの秒数です。

ゼロや負の数字が指定された場合は、Cookieが期限切れになります。

 

ExpiresとMax-Ageがどちらも指定されている場合は、Max-Ageが優先されます。

 

Domain

Cookieを送信したいサーバーのドメイン名を指定します。

例えば、example.comを指定した場合、example.comを含むURLを指定したときにCookieが送信されます。(example.com, www.example.com, hoge.example.comなど)

 

また、何も指定しなかった場合は、このCookieを発行したサーバー(example.com)のみにCookieが送信されます。

別のサブドメインを持つサーバー(www.example.com, hoge.example.comなど)にはCookieは送信されません。

CookieのDomain属性について

 

つまり、Domain属性は、指定しない方が「限定性」が高まるということです。

これはすなわち、Domain属性を指定しない方がセキュリティの強度が向上することを意味しています。

 

Cookieを発行したサイトに対してのみCookieを送信したい場合は、Domain属性は指定しないようにしましょう。

参考:CookieのDomain属性は*指定しない*が一番安全

 

Path

Cookieを送信するパスの名前を指定します。

つまり、送信するURLにここで指定するパスが含まれている場合のみCookieが送信されるということです。

 

例えば、Path=’/hoge’を指定した場合、hoge配下のリソース(‘/hoge/index.html’, ‘/hoge/huga/index.html’など)にアクセスした際にCookieが送信されます。

 

ほとんどの場合、指定したドメイン(example.com)配下のリソースに対しては、全てCookieを送信したいはずなので、Path=’/’を指定することが多いでしょう。

CookieのPath属性について

 

また、Path属性に何も指定しなかった場合は、Cookieを発行したページに対してのみCookieが送信されます。(/hoge/index.htmlでCookieを発行したなら、/hoge/index.htmlを指定したときのみCookieが送信される)

 

Secure

Secure(セキュア)な通信(HTTPS通信)が行われている場合のみサーバーに対してCookieを送信します。

逆に言えば、セキュアな通信でない場合(HTTP通信の場合)は、Cookieはサーバーに送信されません。

 

セキュリティをより堅牢にするため、HTTPS通信を行なっている場合は必ず指定するようにしましょう。

HttpOnly

JavaScript経由(Document.cookieなど)でCookieが取得できないようにします。

セキュリティを高めるため、JavaScriptでCookieを取得しない場合は指定するようにしましょう。

 

SameSite

Webサイト内のリンクを踏んで別のサイトに移動する際に、遷移先のサイトのCookieを送信するか否かを指定します。

 

指定できる値は、Strict, Lax, Noneのいずれかです。

それぞれ以下の意味合いを持ちます。

  • Strict:リンクを踏んで別サイトに移動する場合はそのサイトのCookieは送信しない
  • Lax:GET等の安全なメソッドの場合のみCookieが送信される。POSTの場合は送信されない
  • None:どんな場合でもCookieを送信する

 

この設定を適切に行うことで、CSRF攻撃等に対するセキュリティ強度を高めることができます。

 

Strictを設定すれば安全ではありますが、ログイン機能がある別サイトに移動する際に毎回ログイン処理を行わなくてはならないため、基本的にはLaxを指定することが多いでしょう。

参考:SameSite cookies

 

Cookieの各属性まとめ

最後にもう一度Cookieの属性の意味を振り返りましょう。

Cookieの属性まとめ

 

今回は以上です。

この記事が、Cookieに対する理解を深める上で少しでも参考になっていたら幸いです。

参考書籍

参考記事

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA