Skip to content

Sécurité et limites ​

Authentification ​

  • Code à usage unique par email (Better Auth) : expiration en 5 minutes, 3 essais, codes stockés hachés, limitation des envois.
  • SSO OIDC par domaine. Seuls les administrateurs de la plateforme déclarent un fournisseur, après avoir vérifié que l’organisation possède le domaine : sinon un fournisseur pourrait émettre des emails d’un domaine qui n’est pas le sien. Les routes d’enregistrement de Better Auth ne sont pas exposées.
  • Sessions web de 7 jours en cookies HttpOnly. Aucun en-tête ne suffit à se faire passer pour quelqu’un.
  • Connexion VS Code par approbation dans le navigateur, avec comparaison d’un code affiché des deux côtés. Le jeton reste chiffré dans le stockage secret de VS Code ; le serveur n’en garde que l’empreinte SHA-256. Sessions de 30 jours, révocables.

Données ​

DonnéeOùRemarque
Organisations, membres, invitations, groupes, thèmes, versions, rapports de validation, préférences, sessions hachées, fournisseurs SSO, journalBase SQLite (Cloudflare D1)Versions publiées immuables (contrainte SQL)
CSS publiésStockage de la plateforme (Cloudflare R2) ou de l’organisation (S3 compatible, Azure Blob)Jamais public : le serveur renvoie le CSS après contrôle des droits
Identifiants de stockageBase, chiffrés (AES-GCM)Jamais renvoyés ; adresses de stockage en HTTPS uniquement
CSS envoyé à l’assistant IAAPI Claude (Anthropic)Seulement si l’organisation l’active ; images et polices incorporées retirées avant l’envoi
Présentations Markdown et leurs imagesNulle partElles restent sur les postes

Contrôles sur les thèmes ​

Chaque thème passe par le validateur des thèmes, le même dans l’éditeur, sur le serveur et dans l’extension :

  • CSS lu par un vrai analyseur : les contrôles portent sur les valeurs décodées, un échappement ne peut pas masquer une URL ;
  • aucune ressource externe : seules des images et polices incorporées en data: base64, dont les premiers octets correspondent au type annoncé ;
  • pas de SVG, pas d’@import hors thèmes intégrés à Marp, pas de </style, pas d’anciens mécanismes de script ;
  • toutes les classes du Core v1 doivent avoir un effet, et la géométrie des slides de contrôle est vérifiée dans un navigateur.

Il n’y a pas de limite de taille comme règle : les images incorporées font grossir le CSS. Seule subsiste la limite technique d’une requête (64 Mo).

L’aperçu est affiché dans une iframe isolée, sans scripts ni réseau. Côté extension, l’organisation, le nom, la version et l’empreinte SHA-256 du CSS sont vérifiés avant installation, puis le validateur est appliqué.

Ce que les permissions ne font pas ​

  • Une révocation n’efface pas les copies déjà téléchargées et n’empêche pas leur utilisation hors ligne. Les permissions régissent la distribution.
  • La géométrie (étape 6 du validateur) est mesurée par le navigateur de l’éditeur : une personne qui forgerait son rapport ne publierait que dans sa propre organisation. La sécurité (étapes 1 à 3) est toujours contrôlée par le serveur.

Hors périmètre actuel ​

Stockage ou édition collaborative des présentations, rendu PDF/PPTX distant, éditeur visuel de thème, incorporation automatique d’images et de polices (le CSS importé doit déjà être autonome), invitations par lien, suppression d’organisation, synchronisation d’annuaire (SCIM), facturation.

Avant une mise en production ​

Points ouverts, à traiter avec le compte et le domaine définitifs : domaine expéditeur des emails, limites de requêtes, sauvegardes de la base, nettoyage des fichiers orphelins (brouillons remplacés) dans les stockages, relecture des traductions ukrainienne et arabe.

Documentation du langage DWA Core v1, de l’extension VS Code, du CLI et du portail des thèmes.