Google chromeのCSRF対策のCookie設定の対策

先日Googleから発表されたCSRF対策でセキュアな環境が確認できないサイトではエラーを出すという仕様。

 

既にディベロッパーツールではエラーが出るようになっている。

A cookie associated with a cross-site resource at http://*****/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.

このサイトでおすすめしているNginxで設定する場合、まずsame-site属性を設定する必要があるようだ。

 参考:ウェブティ株式会社様『様々な環境下でCookieをSameSite=None; Secureに設定して従来通りの挙動に変更する』

まず、php.iniのセッションのフェーズに

session.cookie_samesite=None

を追記してやる。

 

次に、Cookieの設定を変更してやる必要があるようなんだけど、どこで設定するのか分からない、CakePHPなんて触ったこと無い。

とりあえず色々調べていたら、どうやらここで設定しているらしいことを見つけた。

~home/public_html/vendors/cakephp/cakephp/lib/Cake/Controller/Component/CookieComponent.php

 

ここで記述されている、

public $secure = false;

public $secure = ture;

に変えてやると、とりあえずエラーは消えた。

 

アップデートの際には上書きされて消えてしまうと思うので、必ずアップデート後も再度書き換える必要があると思う。

 

※テスト環境では消えたけどこのサイトでは消えない・・・。なぜだ・・・。