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;
に変えてやると、とりあえずエラーは消えた。
アップデートの際には上書きされて消えてしまうと思うので、必ずアップデート後も再度書き換える必要があると思う。
※テスト環境では消えたけどこのサイトでは消えない・・・。なぜだ・・・。