メモログ

塵が積もって山とならないメモのログ

Github の Content Security Policy

github.com のサイトでdelicious bookmarklet を動かしても、モーダルが開いてくれない。これはなんでかなと思っていたら、どうやら Content Security Policy と関連するらしいです。詳しくは Content Security Policyに書かれています。Shortcomingsの部分。W3Cの仕様的には、Content Security Policy (CSP) がbookmarkletの挙動を阻害するものではないはずだけど、実際にはbookmarkletの動作に影響を及ぼしていると。

それで、ついでにGithubでどんなCSPの設定がされているのかを見てみました。それがこんな感じ(x-content-security-policyのheader)。

policyの内容についてはCSP policy directives - Security | MDNに詳しく書かれています。W3CにもExamplesが書かれています。

default-srcの設定は、srcの設定がされていない場合に使われます。アスタリスク(*)はMatchingに仕様が書かれてありますが、*のみで設定されている場合はすべてのURLが許可の対象となります。

script-srcは、Javascriptを対象にしていて、'self’のexpressionは、Same Origin なURLが許可の対象になります(the set of URIs which are in the same origin as the protected resource)。'unsafe-inline’や’unsafe-eval’が指定されていないので、インラインスクリプトの挿入やevalの実行ができなくなる。

style-srcは、スタイルシートを対象にしていて、'unsafe-inline’を指定しているのでstyle要素やstyle属性でのCSSの指定が可能になっている。style属性でのスタイルの操作はjQueryでも普通に行われるので、意識的に使わないようにしていないと、unsafe-inlineは必要になってくるかなと思われます。

object-srcはobject、embeded、applet要素が対象になる。

というメモ。