--- name: web-appsec-hardening description: >- Enforce modern web application security (AppSec) standards on frontend and edge layers. Implements Strict CSP Level 3 (nonce + strict-dynamic), OWASP Secure Headers, DOM sanitization, secure cookie attributes, CSRF mitigation, and subresource integrity (SRI). --- # Web AppSec & Frontend Hardening Ce skill impose les standards actuels de sécurité applicative (W3C CSP Level 3, OWASP Secure Headers, DOMPurify, RFC 6265bis) sur la couche front-end et edge des applications web modernes. --- ## 🎯 Déclencheurs d'Activation Activez ce skill dès que : 1. Vous configurez un middleware de sécurité, un serveur HTTP ou des en-têtes de réponse (Next.js, Remix, Astro, Express, Fastify, Nginx). 2. Vous intégrez des scripts tiers (analytics, trackers, widgets, balises). 3. Vous affichez du contenu dynamique ou du HTML généré par l'utilisateur (Markdown, éditeur WYSIWYG, commentaires). 4. Vous configurez des cookies de session ou des jetons d'authentification. 5. Vous auditez la sécurité d'une interface web avant mise en production. --- ## 🛡️ 1. Content Security Policy (Strict CSP Level 3) ### La Règle d'Or : Abandon des Allowlists au profit du Nonce + `strict-dynamic` Les listes blanches de domaines (`script-src https://cdnjs.cloudflare.com ...`) sont fragiles, obsolètes et contournables. La norme moderne repose sur un **nonce cryptographique unique par requête**. ### Structure de l'en-tête Strict CSP ```http Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-RANDOM_VALUE' 'strict-dynamic'; style-src 'self' 'unsafe-inline'; img-src 'self' blob: data: https:; font-src 'self'; object-src 'none'; base-uri 'none'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests; ``` ### Mécanisme : - `'nonce-RANDOM_VALUE'` : Généré côté serveur (UUID cryptographique base64) à chaque requête HTTP et injecté dans la balise `