Isolation des content scripts d’extensions de navigateur
Comprendre les mondes isolés, le DOM partagé et les messages explicites entre une extension et le JavaScript de la page.
BotBrowser Team
Vous voulez la documentation structurée pour Plateforme ?
Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.
BotBrowser peut répéter une fixture d’extension autorisée et observer les résultats visibles du DOM et des messages, mais il ne peut pas accorder de permissions d’hôte ni rendre les données de page fiables.
Un content script d’extension peut lire et modifier le DOM d’une page tout en exécutant ses variables dans un environnement JavaScript séparé. Ce monde isolé n’est ni un second DOM ni une frontière de sécurité universelle. La page et l’extension voient souvent les mêmes éléments, mais ne partagent pas automatiquement variables, prototypes ou état privé. Gardez les opérations privilégiées dans l’extension et faites de chaque message une interface explicite et validée.
TL;DR
- Le monde isolé sépare les références JavaScript, tandis que le DOM visible peut rester commun.
- Vérifiez type, émetteur, origine et forme de chaque message.
- BotBrowser répète des fixtures synthétiques autorisés, sans accorder de permission ni prouver une transaction distante.
Sommaire
DOM et événements partagés
Une classe ou un texte ajouté par le content script reste observable par la page. Un observer de mutations est une notification, pas une preuve d’action utilisateur. Limitez la zone observée, retirez les listeners au démontage et revérifiez l’état avant une opération sensible.
Liens associés
Voir l’intégrité des API entre realms et les fixtures d’automatisation et d’isolation.
Ce que signifie l’isolation
Le navigateur donne au content script son propre objet global et ses propres références JavaScript. Une variable de la page n’est pas automatiquement visible dans le script, et l’inverse est également vrai. Les prototypes peuvent différer : modifier window.Array dans la page ne remplace donc pas la référence utilisée par l’extension.
Le DOM reste la surface partagée. Les deux mondes peuvent généralement lire et modifier les mêmes nœuds, attributs et événements. Une mutation visible est donc visible par la page. L’isolation ne cache pas les changements et ne permet pas de lire des données que la page ne peut pas exposer.
Les permissions du manifeste déterminent toujours les URL et frames concernés. Les API privilégiées doivent rester dans le contexte de l’extension ou son service worker. L’isolation ne donne pas accès à toutes les URL ni à toutes les API.
Franchir la frontière volontairement
Utilisez la messagerie pour l’état propre à l’extension. Vérifiez le type, l’émetteur, l’origine et la forme de la charge utile. Si la page doit participer, gardez un pont window.postMessage étroit, avec identifiant de requête et vérification stricte de l’origine. Un message de la page n’est jamais une commande authentifiée.
Évitez l’injection de chaînes dans le monde principal lorsqu’une API de content script suffit. Si un pont est indispensable, excluez les secrets et revérifiez chaque requête côté privilégié.
Tester la frontière réelle
Créez un fixture avec script de page, content script et service worker. Définissez des variables homonymes, remplacez un prototype côté page et enregistrez les valeurs et mutations DOM observées. Répétez avec une frame, une URL restreinte, un rechargement et un redémarrage du worker. BotBrowser peut répéter un fixture autorisé, mais ne peut pas accorder les permissions ni rendre les données de page fiables.
Conclusion
Considérez le content script comme un monde JavaScript isolé avec un DOM partagé et observable. Gardez les opérations privilégiées dans l’extension, validez chaque pont et testez les frames et cycles de vie.
Sources
Articles Connexes
Faites passer BotBrowser de la recherche à la production
Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.