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";