Sécurité et publication
Les thèmes tiers sont une entrée de chaîne d'approvisionnement. La validation et le sandbox de la plateforme réduisent le risque mais ne remplacent pas la revue de sources, la vérification des licences ni les publications reproductibles.
Limites de validation de la plateforme
| Élément | Limite |
|---|---|
| Taille ZIP compressée | 8 MiB max |
| Taille totale décompressée | 16 MiB max |
| Taille d'un fichier | 4 MiB max |
| Nombre de fichiers | 300 max |
manifest.json | 64 KiB max, JSON UTF-8 |
| Profondeur de chemins | 8 niveaux max |
| Longueur d'un chemin | 180 caractères max |
| Fichiers CSS | 1-4 pour les thèmes CSS |
| Hauteur Canvas | 400-12000 |
Les téléversements doivent utiliser le Content-Type ZIP et porter un x-theme-sha256 calculé par le navigateur. Le Worker recalcule le SHA-256 de tout le paquet et rejette en cas de divergence. x-extension-sha256 n'est qu'un en-tête de compatibilité hérité pour les anciens outils de thèmes ; il ne signifie pas un support de plugins. Les nouveaux outils envoient x-theme-sha256.
Validation du Manifest
schemadoit êtrenie-sla-theme-v1.id: 3-49 lettres minuscules, chiffres ou tirets, commence par une lettre et reste stable après publication.versiondoit être SemVer.typeest fixé àtheme.- Le mode CSS exige 1-4 fichiers de style du paquet ; le mode Canvas exige un HTML d'entrée.
permissionsne peut être que["status:read"].files, quand déclaré, doit correspondre exactement au contenu du ZIP.- Les chemins doivent être en Unicode NFC ; chemins absolus, barres obliques inverses,
.., caractères de contrôle et chemins dupliqués sont rejetés. - Extensions autorisées :
.css,.html,.js,.json, formats d'image web courants et polices WOFF/WOFF2.
Chaîne d'approvisionnement et publication
- Construisez des artefacts propres depuis les sources ; ne publiez jamais de sortie de serveur de dev.
- Indiquez clairement l'auteur, la version, la licence et l'adresse des sources ; n'usurpez pas les thèmes officiels.
- Publiez le SHA-256 du ZIP séparément :
shasum -a 256 theme.zip. - Les mises à jour gardent le même
idet augmentent le SemVer ; après un téléversement écrasant, un administrateur réactive le thème. - Validez sur un déploiement de test avant d'activer en production.
- Ne mettez pas de fichiers de licence sans extension ni de Markdown dans le ZIP ; conservez la licence dans le dépôt source et la page Release.
Isolation à l'exécution
Les thèmes CSS n'exécutent aucun script. Les thèmes Canvas tournent dans une iframe sandbox sans privilèges même origine ; la CSP interdit le réseau direct, les formulaires et la navigation de niveau supérieur, et les données n'arrivent que via le protocole de messages. L'API de téléversement de plugins et le runtime de plugins ne sont pas ouverts.
Les administrateurs ne devraient activer que des thèmes de sources fiables. La validation de la plateforme arrête les téléversements accidentels et les contournements courants, pas un auteur malveillant qui empoisonnerait volontairement un thème ; la revue de sources et la vérification des licences restent de la responsabilité de l'administrateur.