dc1f115bd6
export-pdf-button et print-button injectaient marked(content) directement dans innerHTML / document.write. Un lien Markdown javascript: passait le filtre hasRestrictedChar et pouvait s'exécuter. Ajout de DOMPurify.sanitize() via import dynamique (déjà présent en dep transitive de jspdf) sur les deux composants, avec whitelist de tags et d'attributs stricte. markdown-renderer n'est pas touché car react-markdown-preview utilise rehype-sanitize en interne. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
Tâches — Konstitisyon Frontend
Améliorations critiques (P1)
- Rate limiting —
lib/rate-limit.js+middleware.js- Routes protégées :
/api/auth/register(5/15min) et/api/auth/callback/credentials(10/5min) - Logique vérifiée : comptage, blocage 429 + Retry-After, expiration fenêtre ✓
- Routes protégées :
- CORS whitelist — restreindre
CORS_ORIGIN=truedans l'env Directus - Sanitisation Markdown — DOMPurify sur la sortie
markeddans export-pdf et print-button
Améliorations hautes (P2)
- Headers CSP — ajouter dans
next.config.js - Tests unitaires — Vitest sur
lib/format.js,lib/version-utils.js,lib/rate-limit.js - Tests extensions Directus — mocks VersionsService
- Refresh token explicite — callback
jwtdans NextAuth options - Pipeline CI — GitHub Actions (lint + test + build)
- Sentry — tracking erreurs frontend + API routes
Améliorations moyennes (P3)
- ISR page d'accueil (
revalidate) - Dockerisation frontend (
output: standalone) - Audit accessibilité WCAG 2.1
- Responsive mobile dashboard
- Lazy loading jsPDF + md-editor
- Migration NextAuth v5 stable