私はCSP(Content-Security-Policy)ヘッダーを示すサンプルExpressアプリケーションを作成していますが、helmet-cspを使用しようとしています。ヘルメット-CSPのドキュメントのすべては、それがapp.use(csp({ ... }))
を経由して、標準的なサードパーティのミドルウェアとして使用示し個々のルートにhelmet-cspを実装してください
- これはに自分のアプリケーション内のすべてのルートをCSPヘッダが追加されますが、私は、個々のルートでそれをカスタマイズしたいです。以上により
サンプルアプリケーション
var express = require('express');
var http = require('http');
var csp = require('helmet-csp');
var app = express();
app.use(csp({
directives: {
frameSrc: ["'none'"]
}
}));
app.get('/', (request, response) => {
response.send('hi, :wave: =]');
});
app.get('/frameable', (request, response) => {
response.send('you can frame me!');
});
http.createServer(app).listen(80, (err) => {
if (err) {
return console.log('error', err);
}
});
、すべてのルートがCSPヘッダを受信します。
をコンテンツセキュリティポリシー:フレーム-srcの 'なし'
/frameable
ルートでは、これを無効にしたいと思います
コンテンツセキュリティポリシー:なるようにCSPヘッダフレーム-SRC「自己」
私は/をルートごとにヘルメット-CSPによって設定されたヘッダをカスタマイズする必要があるときは、
response.setHeader('Content-Security-Policy', "frame-src 'self'");
またはヘルメット-CSP自体を経由してこれを行う方法があります:私は手動でのようなラインで各app.get
内にそれらを無効にする必要がありますか?
これはヘッダーを直接修正しているので、これは簡単です(私の質問の終わりを見てください)。ミドルウェア自体を介してルート単位でこれを行うことができるのであれば私は不思議です。小文字のCSPヘッダーを手作業で設定するケースインポイントは、世界の終わりではありませんが、複数のオプションを持つ複数のヘッダーがあり、それらが複数のルートでカスタムになっている場合、 'helmet-csp 'を手動で定義するのではなく、 – newfurniturey
連鎖ミドルウェアで再利用が可能 – jasonpenny
ああこれは素晴らしいです - ありがとう!これがミドルウェアタイプのものであることを知っていると(ライブラリに縛られていない)素晴らしいですが、将来的には大いに役立ちます。ありがとう(^_^) – newfurniturey