Le CspMiddleware
rend les choses plus simples pour ajouter des en-têtes
Content-Security-Policy dans votre application. Avant de l’utiliser, vous devez
installer paragonie/csp-builder
:
composer require paragonie/csp-builder
Vous pouvez configurer le middleware en utilisant un tableau, ou en lui passant
un objet CSPBuilder
déjà construit:
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);
Si vous voulez utiliser une configuration CSP plus stricte, vous pouvez activer
des règles CSP basées sur le nonce avec les options scriptNonce
et
styleNonce
. Lorsqu’elles sont activées, ces options vont modifier votre
politique CSP et définir les attributs cspScriptNonce
et cspStyleNonce
dans la requête. Ces attributs sont appliqués
à l’attribut nonce
de tous les éléments scripts et liens CSS créés par
HtmlHelper
. Cela simplifie l’adoption de stratégies utilisant un nonce-base64
et strict-dynamic
pour un surcroît de sécurité et une maintenance plus
facile:
$policy = [
// Doivent exister, même vides, pour définir le nonce pour script-src
'script-src' => [],
'style-src' => [],
];
// Active l'ajout automatique du nonce aux tags script & liens CSS.
$csp = new CspMiddleware($policy, [
'scriptNonce' => true,
'styleNonce' => true,
]);
$middlewareQueue->add($csp);