コンテンツにスキップ

CloudflareとのSameSiteクッキーの相互作用

Google ChromeはSameSiteクッキーの動作を強制します これは、ユーザーを追跡するマーケティングクッキーや、攻撃者がクッキーを盗んだり操作したりすることを可能にするクロスサイトリクエストフォージェリ(CSRF)から保護するためです。  

SameSiteクッキー属性には3つの異なるモードがあります:

  • Strict: クッキーはファーストパーティ(訪問したドメイン)によって作成されます。例えば、cloudflare.comを訪問した際にCloudflareによって設定されるファーストパーティクッキーです。
  • Lax: クッキーはapexドメイン(例えばexample.com)にのみ送信されます。例えば、誰かが(blog.example.net)画像(img.example.com/bar.png)をホットリンクした場合、クライアントはimg.example.comにクッキーを送信しません。なぜなら、それはファーストパーティでもapexコンテキストでもないからです。
  • None: クッキーはすべてのリクエストに送信されます。

CloudflareクッキーSameSite設定は以下の通りです:

CloudflareクッキーSameSite設定HTTPSのみ
__cf_bmSameSite=None; Secureはい
cf_clearanceSameSite=None; Secureはい
__cflbSameSite=Laxいいえ

セッションアフィニティクッキーにおけるSameSite属性

現在、セッションアフィニティクッキーSameSite属性を設定するには、Cloudflare APIを使用する必要があります(例えば、ロードバランサーの作成操作)。

SameSiteクッキー属性の値を設定するには、HTTPリクエスト内のsession_affinity_attributesオブジェクトにsamesiteおよびsecureのJSON属性を含めます。

これら2つの属性の利用可能な値は以下の通りです:

samesite属性:

  • 有効な値:Auto(デフォルト)、LaxNoneStrict

secure属性:

  • 有効な値:Auto(デフォルト)、AlwaysNever

samesite属性のAuto値は以下の動作を持ちます:

  • 常にHTTPSを使用が有効な場合、セッションアフィニティクッキーはLax SameSiteモードを使用します。
  • 常にHTTPSを使用が無効な場合、セッションアフィニティクッキーはNone SameSiteモードを使用します。

secure属性のAuto値は以下の動作を持ちます:

  • 常にHTTPSを使用が有効な場合、セッションアフィニティクッキーはSameSite属性にSecureを含めます。
  • 常にHTTPSを使用が無効な場合、セッションアフィニティクッキーはSameSite属性にSecureを含めません。

APIリクエストでsamesiteNoneに設定した場合、secureNeverに設定することはできません。

セッションアフィニティクッキーに特定のSameSite設定が必要な場合、Cloudflareはデフォルトの動作に依存するのではなく、samesiteおよびsecureの値をAuto以外に設定することを推奨します。これにより、SameSiteクッキー属性の値は設定変更(具体的には常にHTTPSを使用)によって変更されることはありません。


SameSiteおよびcf_clearanceクッキーに関する既知の問題

訪問者がWAFカスタムルールまたはIPアクセスルールによって提示されたチャレンジを解決すると、訪問者のブラウザにcf_clearanceクッキーが設定されます。cf_clearanceクッキーのデフォルトの有効期限は30分で、チャレンジパッセージを介して設定できます。

Cloudflareは、異なるホスト名からの訪問者リクエストが後のチャレンジやエラーに直面しないようにするために、cf_clearanceクッキーにSameSite=Noneを使用します。SameSite=Noneが使用される場合、Secureフラグと一緒に設定する必要があります。

Secureフラグを使用するには、HTTPS接続を介してクッキーを送信する必要があります。ウェブサイトのどの部分でもHTTPを使用している場合、cf_clearanceクッキーはデフォルトでSameSite=Laxになり、ウェブサイトが正常に機能しない可能性があります。

この問題を解決するには、ウェブサイトのトラフィックをHTTPSに移動させてください。Cloudflareはこの目的のために2つの機能を提供しています:


関連リソース