concrete5 の Cookie 設定 SameSite=None; Secure を適用する方法

菱川拓郎
菱川拓郎

先日GoogleがクロスサイトCookieの仕様変更について告知し、Chromeバージョン80から適用されました。この仕様変更について、ブログ記事「concrete5 サイトにおける Chrome 80 からの Cookie に関する仕様変更への対応について」にて、concrete5では特段の対応が必要ないことをご紹介しました。

しかし、中には対応が必要な特殊なサイトもあるかと思います。例えば、外部サイトにいったんリダイレクトし、外部サイトからPOSTで戻ってきつつ、セッションを維持したいという設計のサイトなど…かなり特殊ですね ;-)

concrete5でCookie関連の設定は、設定ファイルから行うことが可能です。新しい Cookie 設定 SameSite=None  を使いたい場合は、 application/config/concrete.php に以下のように記述してください。

<?php

return [
    'session' => [
        'cookie' => [
            'cookie_secure' => true,
            'cookie_samesite' => 'none'
        ],
    ],
];

注意事項として、すでにこの設定ファイルが存在する際は、単にコピペするのではなく既存の配列の中に記述するようにしてください。

また、この設定値はconcrete5に同梱されているSymfonyフレームワークのHttpFoundationコンポーネントのバージョンが3.4.28以上でないと使えません。本稿を執筆時点で最新のconcrete5バージョン8.5.2に同梱されているのは3.4.21ですので、concrete5がインストールされているディレクトリで composer update を実行していただくか、次のバージョンをお待ちください。

Getting Started - getcomposer.org

【2020/07/01 追記】concrete5 バージョン 8.5.3 で Symfonyコンポーネントがアップデートされましたので、8.5.3以降であれば  composer update は不要です。

 

なお、この Cookie 設定は経過的な措置と思われます。外部サイトからpostされる設計自体が本当に必要なのかを見直した方が良いのだと思われます。