まもなく公開される CSP Level3 の変更点

Content Security Policy Level 3のFirst Public Working Draftがそろそろ公開されそうです。


W3Cgithubリポジトリより公開予定の仕様が確認できます。
https://w3c.github.io/webappsec-csp/published/FPWD-2015-01.html

CSP2からの変更点

CSP3では主に以下の点が変更されたようです( https://w3c.github.io/webappsec-csp/published/FPWD-2015-01.html#changes-from-level-2 )。


1. FETCHの仕様の用語で一から書きなおされました。これにより、CSPの要求と制限が他の仕様と整合性が取れるようになりました(特にService Workersの仕様)。


2. CSP Level2で非推奨となったframe-srcディレクティブが削除されました


3. sourceを指定する際にセキュアでないスキーマはセキュアなスキーマにもマッチします。http:を指定した場合はhttp: https: と同等です。つまり、http://a.comhttp://a.comhttps://a.comと同等です。同様に、ページのスキーマがhttpでも'self'はhttpswssとマッチします。

4. インラインなスクリプトやスタイルから発生した違反レポートは、"inline"をブロクッされたリソースとしてレポートされます。同様に、ブロックされたeval()は、ブロックされたリソースとしてレポートされます。


5. DocumentやWorker自体に影響するディレクティブはCSP-DOCUMENTの仕様として移動されました。これには base-uri, form-action, frame-ancestors, plugin-types, sandboxが含まれます。


6. manifest-srcディレクティブが追加されました。


このように指定された場合

Content-Security-Policy: manifest-src https://example.com/

以下の様なlinkタグはブロックされます

<link rel="manifest" href="https://not-example.com/manifest">


7. report-uriディレクティブは非推奨となり、新しいreport-toディクレクティブを使用して下さい。これはOOB-REPORTINGの仕様に依存します。


追加分について、下記記事も参照
CSP3のunsafe-dynamicとunsafe-hash-ttributes