Files
konstitisyon.nu/tasks/todo.md
T
cedric dc1f115bd6 security: sanitiser la sortie marked avec DOMPurify (XSS)
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>
2026-04-13 21:48:26 +04:00

1.2 KiB

Tâches — Konstitisyon Frontend

Améliorations critiques (P1)

  • Rate limitinglib/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 ✓
  • CORS whitelist — restreindre CORS_ORIGIN=true dans l'env Directus
  • Sanitisation Markdown — DOMPurify sur la sortie marked dans 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 jwt dans 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