勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでCookie保存時にSameSite属性を設定する方法

  PHP

あるシステムのセキュリティ対策としてCookie保存時にSameSite属性をStrictに設定してほしいと要望を受けた。ただ、SameSite属性について聞いたことが無く、設定方法や設定するとどうなるのかが分からなかった。そのためPHPでの設定方法及び属性についての詳細を以下にメモ。

 

設定方法

ソースコード

コメントにもある通りsamesite属性は「None」「Lax」「Strict」が指定可能。ちなみに指定しなかった場合は「None」になるみたい。

$cookie_options = array(
    'expires' => time() + 3600, 
    'path' => '/',
    'domain' => '',
    'secure' => true,
    'httponly' => true,
    'samesite' => 'Strict' //None or Lax or Strict
);
setcookie('test_key', 'test_val', $cookie_options);

注意点

マニュアルの変更履歴にもある通りSameSite属性はPHP7.3からサポートされたとのこと。7.3より前のバージョンの場合は上記方法では設定できない点に注意すること。

 

SameSite属性について

CSRF対策のための属性となり、別ドメインに対してのCookieの送信の振る舞いについての設定項目とのこと。

「None」「Lax」「Strict」はセキュリティレベルとなり、「None」は制限なし、「Lax」は多少制限あり、「Strict」が一番制限が厳しい設定となる。

 

所感

Cookieを別ドメインに対して送信する、という部分のイメージが掴めないため、イマイチSameSite属性の詳細については理解できなかった。

 

参考サイト

https://qiita.com/KWS_0901/items/695bd1ecc17a8c2e6d69

https://web.dev/articles/samesite-cookies-explained?hl=ja

 - PHP

  関連記事

TCPDF「Could not include font definition」エラーの対処方法
TCPDF「Could not include font definition」エラーの対処方法

TCPDFでフォントを「arialunicid0」に指定したところ「TCPDF ...

PHPで一括出力ではなく、ひとつずつ順次に出力する方法
PHPで一括出力ではなく、ひとつずつ順次に出力する方法

PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...

jQueryからAjax経由でPHPにリクエストしCookieを操作する方法
jQueryからAjax経由でPHPにリクエストしCookieを操作する方法

先日PHPでCookie保存時にHttpOnly / Secure属性を設定する ...

PHPで画像のフォーマット(拡張子)の変換
PHPで画像のフォーマット(拡張子)の変換

画像のアップロードでjpg/png/gif形式を受け付けつつ、 最終的にjpgで ...

wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法
wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法

WordPress内に設置されたお問い合わせのフォームようなシステムでエンベロー ...