config/session.phpのsecureとsame_site、実はデフォルトじゃなかった

  • Laravel
  • PHP
  • Security

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

以前書いたconfig/session.phpのメモを見返してたら、コメントの内容が微妙に間違ってることに気づいた。

'secure' => env('SESSION_SECURE_COOKIE', true), // to default true.
'http_only' => true, // to true.
'same_site' => 'strict',

このコメント、「Laravelのデフォルトがtrue(strict)」というニュアンスで書いてたけど、実際のフレームワーク側のデフォルトは違う。

実際のデフォルト

Laravelのconfig/session.phpは素の状態だとこうなってる。

'secure' => env('SESSION_SECURE_COOKIE', false),
'http_only' => true,
'same_site' => 'lax',
  • secure: デフォルトはfalse
  • http_only: デフォルトからtrue(ここだけは元々変更してない)
  • same_site: デフォルトはlax

結論

自分のメモにあった設定は、secureとsame_siteをフレームワークのデフォルトから意図的に変更したものだった。http_onlyだけは最初からtrueなので、実質何も変えてない。

コメントを書き直すならこう。

'secure' => env('SESSION_SECURE_COOKIE', true), // デフォルトはfalse。本番用にtrueへ変更
'http_only' => true, // デフォルトのまま(変更なし)
'same_site' => 'strict', // デフォルトはlax。CSRF対策強化のためstrictへ変更

この辺はLaravelのバージョンによって値が変わってる可能性もあるので、書き換える前に手元の環境のconfig/session.phpと見比べた方が確実。