はじめに
みなさんはSameSite属性についてご存知ですか?
2020年の2月にChromeがアップデートで初期値がNone
からLax
に変更されたり、
railsもconfig.load_defaults
のバージョン指定が6.1以降はnil(実質None)
から
lax
に変更されました。
他の一部の主要なブラウザ(Firehox)でも変更があり、重要な概念かと思うので
今回は備忘録も兼ねてまとめさせて頂きます。
SameSite属性とは?
Cookieの属性の一つであり、CSRFを防ぐためのものです。
簡単にいうと、Webブラウザがcookieの送信をいかに制御するか
指定することができます。
属性の説明は以下のとおりです。
名前 | 説明 |
---|---|
Strict | ブラウザーが同一サイトのリクエストに対してのみクッキーを送信することを意味する |
Lax | 画像やフレームを読み込むリクエストのようなクロスサイトリクエストではクッキーを送信しないが、ユーザーが外部サイトから元のサイトに移動するとき(例えば、リンクをたどるとき)には送信されることを意味する。 |
None | ブラウザーがクロスサイトと同一サイトの両方のリクエストでクッキーを送信することを意味する。 |
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value より内容は引用
簡単にいうと、Strictはどんな場合もCookieは付与されず、Noneの場合はどんな場合もCookieが付与されます。
Laxはaタグ等のリンクやGETリクエストの場合はCookieが付与されますが、画像の読み込みやformタグのPOSTリクエストの場合は付与されないといった挙動になります!
参考資料