コンテンツセキュリティポリシーミドルウェア

CspMiddleware を使用すると、Content-Security-Policyヘッダーをアプリケーションに簡単に追加できます。使用する前に paragonie/csp-builder をインストールしておく必要があります

composer require paragonie/csp-builder

次に、配列を使用するか、ビルドされた CSPBuilder オブジェクトを渡すことで、ミドルウェアを構成できます。:

use Cake\Http\Middleware\CspMiddleware;

$csp = new CspMiddleware([
    'script-src' => [
        'allow' => [
            'https://www.google-analytics.com',
        ],
        'self' => true,
        'unsafe-inline' => false,
        'unsafe-eval' => false,
    ],
]);

$middlewareQueue->add($csp);

厳密なCSP構成を使用したい場合は、 scriptNonce および styleNonce オプションを 使用してノンス(ナンス)ベースのCSPルールを有効にできます。 これらのオプションを有効にすると、CSPポリシーが変更され、 リクエストに cspScriptNonce 属性と``cspStyleNonce`` 属性が設定されます。 これらの属性は、 HtmlHelper によって作成されたすべてのスクリプトおよびCSSリンク要素のnonce属性に適用されます。 これにより nonce-base64strict-dynamic を使用するポリシーの採用が簡素化され、セキュリティが強化され、メンテナンスが容易になります。:

$policy = [
    // script-srcにノンスを設定するには、内容が空の場合でも作成する必要があります
    'script-src' => [],
    'style-src' => [],
];
// スクリプトとCSSリンクタグへのナンス自動追加を有効にします。
$csp = new CspMiddleware($policy, [
    'scriptNonce' => true,
    'styleNonce' => true,
]);
$middlewareQueue->add($csp);