プログラミング

Webの新しい Cookie技術 http SameSite と Secure 対策その2

概要

フリーランスエンジニア スリーネクスト

前回のSameSiteについての話の続きになります。

どのように処理すれば正しくCookieはsecureに処理できるようになるのか具体例とともに記載していきたいと思います。

前回の記事はこちら

Webシステム
http-cookie
Webの新しい Cookie技術 http SameSite と Secure 対策

SameSiteの設定がないとChromeでは警告文が出てきて気になります。今回はSameSiteはどのようなものなのか安全なのかそれとも危険なものなのか説明していこうと思います。

続きを見る

SameSiteの種類

SameSiteは3つに分類されます。

  • None
  • Lax
  • Strict

None

従来どおりの動作
今までのクッキーになるので、今後セキュリティをあげないといけないのであまりおすすめできません。

Lax

CrossSite のリクエストでは、 Top Level Navigation 以外は Cookie を送りません。
別サイトからの遷移でもログイン状態が維持できるため、既存の Session 管理にも導入しやすいです。
POST では Cookie が送られないため、CSRF 攻撃への耐性が高まります。

Strict

自分のサイト以外からの全てのリクエストを Cookie を送らなります。
強い制限である。

Session Cookie にこの属性を付与すると、例えば別のサイトからリンクで遷移した場合にも Cookie が送られなくなる。
別のサイトから遷移する場合は、毎回ログインが必要となるため、ユーザの利便性も考えると難しいです。

具体的にいうと開発者がフォームを作成する時CSRFトークンでのセキュリティ対策をすると419エラーが発生しますのでCSRFトークンを無効にする必要が出てきます。

Laravel 6 の場合でのクッキーのセット

configディレクトリにあるsession.phpというファイルの一番最後の項目「'same_site' => 'strict'」に上記で説明した3種類を記載すればいいです。

一旦strictを入れておりますがlaxでもnoneでも問題ありません。

projectRoot/config/session.php
    /*
    |--------------------------------------------------------------------------
    | Same-Site Cookies
    |--------------------------------------------------------------------------
    |
    | This option determines how your cookies behave when cross-site requests
    | take place, and can be used to mitigate CSRF attacks. By default, we
    | do not enable this as other CSRF protection services are in place.
    |
    | Supported: "lax", "strict"
    |
    */

    'same_site' => 'strict',  // ← ここを変更する。


webサイト設計
http-cookie
Webの新しい Cookie技術 http SameSite と Secure 対策

SameSiteの設定がないとChromeでは警告文が出てきて気になります。今回はSameSiteはどのようなものなのか安全なのかそれとも危険なものなのか説明していこうと思います。

続きを見る

-プログラミング