メモログ

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

grunt で Content Security Policy をテストする

Content Security Policy (CSP)をgrunt-contrib-connectで設定するのにはどうしたら良いかという話。

やり方としては、grunt-contrib-connect タスクで CORS を有効にする - メモログと同様、middlewareのオプションに追加する。

1
2
3
4
5
6
7
8
9
10
11
12
13
middleware: function (connect, options) {
return [
function (req, res, next) {
res.setHeader('Content-Security-Policy-Report-Only',
"default-src *; script-src 'self'; style-src 'self' 'unsafe-inline'; report-uri 'localhost'");
next();
},
// Serve static files.
connect.static(options.base),
// Make empty directories browsable.
connect.directory(options.base)
];
}

こんな感じ。上記では、ポリシーのテストを目的にしているので、「Content-Security-Policy-Report-Only」を使用しています。また、report-onlyモードではreport-uriの設定が必須なので、それを追加しています。report-uriにはUsing CSP violation reports - Security | MDNによると、CSPにひっかかった場合にその内容をreport-uriにPOSTで送ってくれます。

これで、たとえばjasmineのテストをするときにCSPを有効にしてテストすることで違反した場合にレポート送らせることができるなと思ったのですが、まだそこまでは試していません。

というメモ。