コンテンツセキュリティポリシー
コンテンツセキュリティポリシー(CSP)は、クロスサイトスクリプティング(XSS)、クリックジャッキング、その他のコード注入攻撃など、様々なセキュリティ脅威からNext.jsアプリケーションを守る上で重要です。
CSPを使用することで、開発者はコンテンツソース、スクリプト、スタイルシート、画像、フォント、オブジェクト、メディア(オーディオ、ビデオ)、iframeなどの許可可能な送信元を指定できます。
例
ノンスは、1回限りの使用のために作成された、一意のランダムな文字列です。厳格なCSPディレクティブをバイパスして、特定のインラインスクリプトやスタイルの実行を選択的に許可するために、CSPと組み合わせて使用されます。
CSPは悪意のあるスクリプトをブロックするように設計されていますが、インラインスクリプトが必要な正当なシナリオがあります。そのような場合、ノンスは正しいノンスを持つスクリプトの実行を許可する方法を提供します。
ミドルウェアにより、ページがレンダリングされる前にヘッダーを追加し、ノンスを生成できます。
ページが表示されるたびに、新しいノンスを生成する必要があります。つまり、ノンスを追加するには動的レンダリングを使用する必要があります。
例:
デフォルトでは、ミドルウェアはすべてのリクエストで実行されます。matcher
を使用して、ミドルウェアを特定のパスに対してのみ実行するようにフィルタリングできます。
next/link
からのプリフェッチとCSPヘッダーを必要としない静的アセットを無視することをお勧めします。
サーバーコンポーネントで、headers
を使用してノンスを読み取ることができます:
ノンスを必要としないアプリケーションの場合、next.config.js
ファイルでCSPヘッダーを直接設定できます:
ノンスを適切に処理および適用するには、Next.jsのv13.4.20+
を使用することをお勧めします。