# Shadow DOM
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) * **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Informations de base Shadow DOM fait partie de la suite de fonctionnalités [Web Components](https://developer.mozilla.org/en-US/docs/Web/Web\_Components), qui vise à permettre aux développeurs JS de créer des éléments personnalisés réutilisables avec leur fonctionnalité encapsulée loin du reste du code du site web. Essentiellement, vous pouvez utiliser le Shadow DOM pour **isoler le HTML et le CSS de votre composant du reste de la page web**. Par exemple, si vous créez des identifiants d'éléments dans un Shadow DOM, ils **ne seront pas en conflit avec les identifiants d'éléments dans le DOM parent**. Tous les sélecteurs CSS que vous utilisez dans votre Shadow DOM s'appliqueront uniquement dans le Shadow DOM et non dans le DOM parent, et tous les sélecteurs que vous utilisez dans le parent ne pénétreront pas dans le Shadow DOM. ```js // creating a shadow DOM let $element = document.createElement("div"); $shadowDomRef = $element.attachShadow({ mode: "open" }); // open or closed ``` Normalement, lorsque vous attachez un **shadow DOM "ouvert" à un élément**, vous pouvez obtenir une référence au shadow DOM avec **`$element.shadowRoot`**. Cependant, si le shadow DOM est attaché en mode **"fermé"**, vous **ne pouvez pas obtenir de référence** de cette manière. Même après avoir lu toute la documentation des développeurs que j'ai pu trouver, je ne suis toujours pas tout à fait clair sur le but du mode fermé. [Selon Google](https://developers.google.com/web/fundamentals/web-components/shadowdom): > Il existe une autre variante de shadow DOM appelée mode "fermé". Lorsque vous créez un arbre de shadow fermé, **le JavaScript externe ne pourra pas accéder au DOM interne de votre composant**. C'est similaire au fonctionnement des éléments natifs tels que `