Cookieを制御する、CSPのcookie-scopeディレクティブ

CSPでCookieのセットを制限する"cookie-scope"ディレクティブが「
Content Security Policy: Cookie Controls」という仕様で提案されています。


以下のCookieに関する仕様を提案しているMike West氏による提案である


この"cookie-scope"ディレクティブによって、HTTPレスポンスのSet-Cookieヘッダと、JavaScriptからdocument.cookieで設定できるCookie及びその属性を制御できるようになります。

cookie-scope

cookie-scopeは以下のように、Content-Security-Policyヘッダで使用されます。

Content-Security-Policy: cookie-scope none

ルールの種類は以下の4つが使用できます

  • host : "host only"なCookieのみを設定可能。domain属性が付いている場合はブロックされる。
  • http : Set-CookieヘッダからのみCookieをセットできる。document.cookieからはセットできない。
  • none : 全てブロックする
  • secure : secure属性の付いたCookieのみを許可する。それ以外はブロックする。


host, httpは両方記述することが出来ます。noneとその他を同時に記述しても、全てがブロックされます

例1

Cookieに書き込みをする必要がない場合は、以下のようなContent-Security-Policyヘッダを送信します。

Content-Security-Policy: cookie-scope none
例2

サブドメインではCookieへの送信・アクセスが必要ない場合、domain属性を付けられないように以下のようなContent-Security-Policyヘッダを送信します。

Content-Security-Policy: cookie-scope host


設定できる

document.cookie = "key=value";

ブロックされる

document.cookie = "key=value; domain=example.com";
例3

domain属性がついてなく、Secure属性がついているようにするには以下のようなContent-Security-Policyヘッダを送信します。

Content-Security-Policy: cookie-scope host secure


設定できる

document.cookie = "key=value; secure";

ブロックされる

document.cookie = "key=value";
document.cookie = "key=value; domain=example.com; secure";