勉強したことのメモ

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

  関連記事

PHPでeval実行時に「eval()'d code on line」エラー

PHPでeval実行時に「eval()'d code on line 〇〇」とい ...

MySQLで使用するインデックスを指定する

ちゃんと指定してるのにインデックスが使用されていない場合、 オプティマイザに知ら ...

Codeigniter4で独自・外部ライブラリの作成と呼び出し方法

Codeigniter4で独自ライブラリを作成し、コントローラー側で呼び出したい ...

PHPのheader関数で気になった点

結論としてページの移転の場合はexitか ページ自体を消した方がよさ下。 &nb ...

AjaxのJSONP使用でPHPで作った配列をJSに返す方法

AというサイトからBというサイトにAjax通信し、Bの方ではMySQLに接続して ...