{"id":106166,"date":"2022-12-28T11:28:32","date_gmt":"2022-12-28T09:28:32","guid":{"rendered":"https:\/\/jfrog.com\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/"},"modified":"2023-06-19T16:03:59","modified_gmt":"2023-06-19T14:03:59","slug":"yet-another-case-for-using-exclude-patterns-in-remote-repositories","status":"publish","type":"post","link":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/","title":{"rendered":"Encore un Cas d&apos;Utilisation de Mod\u00e8les d&apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)"},"content":{"rendered":"<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143816\/Exclude-Patterns-in-Remote-Repositories-863_300.jpg\" alt=\"Exclude Patterns in Remote Repositories with JFrog Artifactory to avoid Namespace Shadowing attacks\" width=\"863\" height=\"300\" \/><\/p>\n<p><b data-stringify-type=\"bold\">Mise \u00e0 jour<\/b>\u00a0: 1er\u00a0juin 2021. Vous avez demand\u00e9, nous avons r\u00e9pondu\u00a0! Une protection encore plus simple contre les attaques par confusion de d\u00e9pendance\u00a0!\u00a0Lire la suite &#8212; <a class=\"c-link\" href=\"https:\/\/jfrog.com\/blog\/going-beyond-exclude-patterns-safe-repositories-with-priority-resolution\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-stringify-link=\"https:\/\/jfrog.com\/blog\/going-beyond-exclude-patterns-safe-repositories-with-priority-resolution\/\" data-sk=\"tooltip_parent\">Aller Au-Del\u00e0 des Mod\u00e8les d\u2019Exclusion\u00a0: D\u00e9p\u00f4ts S\u00e9curis\u00e9s Avec R\u00e9solution Prioritaire<\/a>.<\/p>\n<hr \/>\n<h2>TL;DR<\/h2>\n<p>Le registre npm est vuln\u00e9rable aux attaques par substitution d&apos;espaces de noms de la cha\u00eene d&apos;approvisionnement, \u00e9galement connu sous le nom d&apos;attaques par \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb. Assurez-vous de cr\u00e9er des packages npm scop\u00e9s et de forcer les mod\u00e8les d\u2019exclusion.<\/p>\n<h2>Obsession de Longue Date avec les Mod\u00e8les d\u2019Exclusion<\/h2>\n<p>Je me souviens de la premi\u00e8re formation client sur JFrog que j&apos;ai dispens\u00e9e en f\u00e9vrier\u00a02012. Cette diapositive \u00e9tait celle avec laquelle j&apos;expliquais l&apos;importance de d\u00e9finir des mod\u00e8les d&apos;exclusion sur vos d\u00e9p\u00f4ts (quand on voit la diapositive, on sait qu&apos;on est en 2012, n&apos;est-ce pas\u00a0? Et puis, Ant \u00e9tait une chose.)\u00a0:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08172937\/Common-Configuration-Include-and-Exclude-Patterns.png\" alt=\"Common Configuration Include and Exclude Patterns with JFrog Artifactory\" width=\"720\" height=\"540\" \/><\/p>\n<p>Voici toute l&apos;histoire\u00a0: Votre entreprise, Acme, a install\u00e9 JFrog Artifactory. Il dispose de l&apos;ensemble habituel de d\u00e9p\u00f4ts distants (qui relaient divers d\u00e9p\u00f4ts centraux comme Maven Central), de d\u00e9p\u00f4ts locaux (qui h\u00e9bergent les artefacts internes de votre entreprise) et d&apos;un d\u00e9p\u00f4t virtuel (qui regroupe les d\u00e9p\u00f4ts locaux et distants sous une seule URL), ce qui simplifie la configuration de votre outil de build (en 2012, nous parlerions de Maven, bien s\u00fbr).<\/p>\n<p>Je leur ai dit, imaginez que vous travaillez sur un projet tr\u00e8s secret appel\u00e9 Secret Almo. Les coordonn\u00e9es de l\u2019artefact sont <span style=\"font-family: Courier\">org.acme:secret-almo:1.0<\/span>, et vous ne voulez pas que vos concurrents le sachent. Mais que se passe-t-il si l\u2019un de vos coll\u00e8gues ajoute accidentellement <span style=\"font-family: Courier\">org.acme:secret-almo:1.1<\/span> en tant que d\u00e9pendance ou toute autre version inexistante de cette biblioth\u00e8que et ex\u00e9cute un build\u00a0? Voici ce qui va se passer\u00a0:<\/p>\n<ol>\n<li>La requ\u00eate arrive dans le <a href=\"https:\/\/www.jfrog.com\/confluence\/display\/JFROG\/Virtual+Repositories\" target=\"_blank\" rel=\"noopener noreferrer\">d\u00e9p\u00f4t virtuel d\u2019Artifactory<\/a>, qui (comme c\u2019est toujours le cas) <strong>v\u00e9rifie d\u2019abord les <a href=\"https:\/\/www.jfrog.com\/confluence\/display\/JFROG\/Local+Repositories\" target=\"_blank\" rel=\"noopener noreferrer\">d\u00e9p\u00f4ts locaux<\/a><\/strong>. Si votre coll\u00e8gue n\u2019a pas commis l\u2019erreur et a utilis\u00e9 1.0 comme version, la r\u00e9solution s\u2019arr\u00eaterait l\u00e0 et l\u2019artefact correct serait r\u00e9cup\u00e9r\u00e9. Mais 1.1 est introuvable, alors Artifactory continue de chercher.<\/li>\n<li>Artifactory examine les d\u00e9p\u00f4ts distants, qui font partie du d\u00e9p\u00f4t virtuel, un par un, en envoyant la requ\u00eate d\u2019URL contenant le nom de votre projet secret aux d\u00e9p\u00f4ts tiers externes\u00a0!<\/li>\n<\/ol>\n<p>\u00ab\u00a0Non\u00a0!\u00a0\u00bb ai-je cri\u00e9. \u00ab\u00a0Quelle horrible n\u00e9gligence de la confidentialit\u00e9\u00a0! Que se passe-t-il si quelqu\u2019un voit les requ\u00eates et d\u00e9couvre le Secret Almo\u00a0!?!\u00a0\u00bb Ce qui \u00e9tait un moyen appropri\u00e9 de motiver nos utilisateurs \u00e0 utiliser des mod\u00e8les d\u2019exclusion. \u00c9tait-ce vraiment un si grand danger\u00a0? J&apos;ai des doutes, mais \u00e7a a aid\u00e9.<\/p>\n<p>Nous martelons ce message \u00e0 nos clients et utilisateurs depuis 2009\u00a0: <a href=\"https:\/\/jfrog.com\/blog\/best-practices-repository-configuration\/\">Ariel Seftel en 2015 <\/a> &#8211; \u00ab\u00a0<strong>D\u00e9finissez un mod\u00e8le d\u2019exclusion sur les d\u00e9p\u00f4ts distants pour emp\u00eacher Artifactory d&apos;y rechercher des packages dont vous savez qu\u2019ils ne peuvent pas s&apos;y trouver<\/strong>\u00a0\u00bb, <a href=\"https:\/\/jfrog.com\/blog\/include-and-exclude-patterns\/\">Shani Levy en 2015 \u00e0 nouveau <\/a>, cette fois sp\u00e9cifiquement sur la s\u00e9curit\u00e9\u00a0: \u00ab\u00a0<strong>G\u00e9rez la s\u00e9curit\u00e9 et boostez les performances avec des mod\u00e8les d\u2019exclusion<\/strong>\u00a0\u00bb et encore une fois, <a href=\"https:\/\/jfrog.com\/blog\/push-the-limits-of-virtual-repositories-2\/\">Rami Honing en 2016<\/a> \u2013 \u00ab\u00a0<strong>modifiez&#8230; des mod\u00e8les d&apos;exclusion pour appliquer des strat\u00e9gies de s\u00e9curit\u00e9.<\/strong>\u201d<\/p>\n<p>Le plus ancien guide utilisateur encore existant est Artifactory 2, \u00e9crit par les co-fondateurs Yoav Landman et Fred Simon en 2009, et devinez quoi\u00a0? <a href=\"https:\/\/www.jfrog.com\/confluence\/display\/RTF20\/Local+and+Remote+Repositories\">C\u2019est tr\u00e8s clair<\/a>\u00a0:<\/p>\n<blockquote><p><em>Il est <strong>extr\u00eamement<\/strong> important d\u2019utiliser des mod\u00e8les d&apos;inclusion et d&apos;exclusion pour les d\u00e9p\u00f4ts. Ceci est particuli\u00e8rement important pour les d\u00e9p\u00f4ts distants aux fins suivantes\u00a0:<\/em><\/p>\n<ol>\n<li><em>\u00c9viter de rechercher des artefacts distants sur des d\u00e9p\u00f4ts qui ne contiendront jamais ces artefacts ou qui ne contiennent qu&apos;une gamme limit\u00e9e d&apos;identifiants de groupe.<\/em><\/li>\n<li><strong><em>Ne pas divulguer des informations commerciales sensibles qui peuvent \u00eatre d\u00e9riv\u00e9es de vos requ\u00eates d&apos;artefacts \u00e0 quiconque peut intercepter ces derni\u00e8res, y compris les propri\u00e9taires du d\u00e9p\u00f4t distant lui-m\u00eame.<\/em><\/strong><\/li>\n<\/ol>\n<\/blockquote>\n<p>De toute \u00e9vidence, <a href=\"https:\/\/www.jfrog.com\/confluence\/display\/JFROG\/Repository+Management#RepositoryManagement-AvoidingSecurityRiskswithanExcludePattern\" target=\"_blank\" rel=\"noopener noreferrer\">la documentation actuelle<\/a> insiste \u00e9galement l\u00e0-dessus\u00a0:<\/p>\n<blockquote><p><strong>Meilleures pratiques utilisant un mod\u00e8le d\u2019exclusion pour les d\u00e9p\u00f4ts distants, pour \u00e9viter les risques de s\u00e9curit\u00e9<\/strong><\/p>\n<p>Pour \u00e9viter d\u2019exposer des informations commerciales sensibles comme d\u00e9crit ci-dessus, nous vous recommandons vivement les meilleures pratiques suivantes\u00a0:<\/p>\n<ul>\n<li>La liste des d\u00e9p\u00f4ts distants utilis\u00e9s dans une organisation doit \u00eatre g\u00e9r\u00e9e sous un d\u00e9p\u00f4t virtuel unique vers lequel sont dirig\u00e9es toutes les requ\u00eates<\/li>\n<li>Tous les artefacts internes doivent \u00eatre sp\u00e9cifi\u00e9s dans le champ <strong>Mod\u00e8le d&apos;exclusion<\/strong> du d\u00e9p\u00f4t virtuel (ou de chaque d\u00e9p\u00f4t distant) \u00e0 l\u2019aide de caract\u00e8res g\u00e9n\u00e9riques pour encapsuler la sp\u00e9cification la plus large possible des artefacts internes.<\/li>\n<\/ul>\n<\/blockquote>\n<p>Vous l&apos;avez compris, nous sommes <strong>tr\u00e8s attach\u00e9s<\/strong> aux Mod\u00e8les d\u2019Exclusion. Mais pourquoi\u00a0? Est-ce vraiment parce que nous avons peur que quelqu\u2019un de Sonatype (responsables de Maven Central) ou GitHub (responsable du Registre npm) aille examiner les journaux et d\u00e9couvrir Secret Almo\u00a0?! C&apos;est vrai, mais pas seulement. Bienvenue dans la temp\u00eate parfaite&#8230;<\/p>\n<h2>du Circonflexe, du Bazar et du D\u00e9p\u00f4t Virtuel<\/h2>\n<p>Retournons dans les bureaux (aujourd&apos;hui probablement virtuels) d\u2019Acme, o\u00f9 le travail sur le Secret Almo est toujours en cours. Regardons une autre composante du projet, pas secr\u00e8te du tout, peut-\u00eatre une biblioth\u00e8que, <span style=\"font-family: Courier\">almo-common-utils<\/span>. Sa source pourrait m\u00eame \u00eatre accessible au public, si, par exemple, il s&apos;agit d&apos;un bundle qui fait partie des produits ou applications Web d\u2019Acme accessibles au public, il est \u00e9crit en Node et JFrog Artifactory dispose d\u00e9sormais d\u2019un ensemble de d\u00e9p\u00f4ts npm distants (utilisant le Registre npm comme relais), locaux (pour le partage de modules en interne) et virtuels.<\/p>\n<p>R\u00e9fl\u00e9chissez \u00e0 ce qui suit\u00a0:<\/p>\n<ol>\n<li>le Registre npm est un bazar (<a href=\"https:\/\/en.wikipedia.org\/wiki\/The_Cathedral_and_the_Bazaar\" target=\"_blank\" rel=\"noopener noreferrer\">selon les termes de Raymond<\/a>). <strong>Tout le monde<\/strong> peut publier une biblioth\u00e8que npm non scop\u00e9e et l\u2019appeler comme il <strong>le souhaite<\/strong> par ex., \u00ab\u00a0<span style=\"font-family: Courier\">almo-common-utils<\/span>\u00a0\u00bb (sauf s\u2019il y a un conflit de nom).<\/li>\n<li>Il n\u2019existe aucun package nomm\u00e9 \u00ab\u00a0<span style=\"font-family: Courier\">almo-common-utils<\/span>\u00a0\u00bb dans le registre npm (enfin, parce qu&apos;il s&apos;agit d&apos;une biblioth\u00e8que d\u2019entreprise interne), donc il n\u2019y a pas de conflit de nom.<\/li>\n<li>La plupart des d\u00e9pendances npm d\u00e9clar\u00e9es \u00e0 l\u2019aide d\u2019une <strong>plage<\/strong> par un tilde ou un circonflexe (caret) pour demander la <strong>derni\u00e8re version<\/strong>compatible, telle que d\u00e9finie dans la norme de Versioning S\u00e9mantique et <a href=\"https:\/\/docs.npmjs.com\/cli\/v6\/using-npm\/semver#caret-ranges-123-025-004\" target=\"_blank\" rel=\"noopener noreferrer\">sa mise en \u0153uvre avec npm<\/a>.<\/li>\n<\/ol>\n<p>La seule information dont un attaquant a besoin pour tenter d\u2019attaquer une organisation non prot\u00e9g\u00e9e est l\u2019existence <span style=\"font-family: Courier\">d\u2019almo-common-utils<\/span>, la version principale de la biblioth\u00e8que en cours d\u2019utilisation (disons qu\u2019ils savent que la version\u00a03 est largement utilis\u00e9e dans l\u2019organisation) et le contenu du code source.<\/p>\n<p>Il peut cloner et modifier la source, en y int\u00e9grant un logiciel malveillant, mais en conservant la compatibilit\u00e9 avec le code d\u2019origine, et la t\u00e9l\u00e9charger dans le Registre npm en tant que <span style=\"font-family: Courier\">secret-almo:3.99.99<\/span>, <strong>parce que personne de l&apos;en emp\u00eachera<\/strong>&#8230;<\/p>\n<p>Regardons maintenant travailler la r\u00e9solution d&apos;Artifactory <strong>sans le mod\u00e8le d\u2019exclusion<\/strong> lorsque <span style=\"font-family: Courier\">secret-almo:^3.0.0<\/span> est demand\u00e9\u00a0:<\/p>\n<ol>\n<li>Recherchez les derniers secret-almo compatibles dans les d\u00e9p\u00f4ts locaux. Trouv\u00e9 3.2.4.<\/li>\n<li>Recherchez le dernier secret-almo compatible dans le d\u00e9p\u00f4t distant proxy npm-registry. Trouv\u00e9 3.99.99.<\/li>\n<li>Le faux secret-almo du registre npm gagne et la <strong>cha\u00eene d\u2019approvisionnement est pirat\u00e9e<\/strong>.<\/li>\n<\/ol>\n<p>Rappelez-vous que j\u2019ai cri\u00e9 \u00ab\u00a0Nix\u00a0!\u00a0\u00bb Il s\u2019agit d\u2019un double non. Et d&apos;un ouille.<\/p>\n<p>Mais c\u2019est l\u00e0 qu\u2019un d\u00e9veloppeur Node.js exp\u00e9riment\u00e9 se l\u00e8verait et dirait&#8230;<\/p>\n<h2>Et les packages scop\u00e9s\u00a0!<\/h2>\n<p>Souvenez-nous que j&apos;ai affirm\u00e9 que n\u2019importe qui peut t\u00e9l\u00e9charger n\u2019importe quoi dans le Registre npm. Eh bien, pas tout \u00e0 fait. Si vous cr\u00e9ez une organisation dans le Registre npm, un espace de noms vous sera attribu\u00e9, vers lequel seuls les membres de votre organisation peuvent t\u00e9l\u00e9charger (c\u2019est ce que npm appelle <a href=\"https:\/\/docs.npmjs.com\/about-organization-scopes-and-packages\" target=\"_blank\" rel=\"noopener noreferrer\">les packages scop\u00e9s publics<\/a>). Cela vous \u00e9vite-t-il l\u2019attaque par Substitution d&apos;Espace de Noms\u00a0? Oui, si c&apos;est bien fait.<\/p>\n<p>Tout d\u2019abord, la soci\u00e9t\u00e9 doit cr\u00e9er l\u2019organisation et r\u00e9server l\u2019espace de noms, car comme tout dans le Registre npm, ils sont \u00e0 prendre. Si votre organisation ne l\u2019a pas r\u00e9serv\u00e9, une attaque plus sophistiqu\u00e9e pourrait toujours r\u00e9ussir : maintenant, l\u2019attaquant doit esp\u00e9rer qu\u2019un d\u00e9veloppeur inexp\u00e9riment\u00e9 trouvera un package avec un scope familier dans le Registre npm (\u00ab\u00a0hey, regarde, il y a un <span style=\"font-family: Courier\">@acme\/almo-common-utils<\/span> ici, il est s\u00fbrement \u00e0 nous\u00a0\u00bb) et d\u00e9cider de l\u2019utiliser. En outre, m\u00eame les membres de l\u2019organisation officielle peuvent toujours \u00eatre n\u00e9gligents et publier des packages non scop\u00e9s.<\/p>\n<p>La solution\u00a0? Vous la connaissez maintenant&#8230;<\/p>\n<h2>Deux r\u00e8gles simples pour \u00e9viter une attaque par Substitution d&apos;Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)<\/h2>\n<ol>\n<li><strong>Publiez uniquement des packages scop\u00e9s\u00a0!<\/strong> Enregistrez une organisation officielle pour votre entreprise dans le Registre npm. Publiez toujours uniquement des packages scop\u00e9s publics. Par ailleurs, cela simplifie \u00e9galement les mod\u00e8les d\u2019exclusion (voir la r\u00e8gle suivante), car maintenant, il vous suffit d&apos;exclure <span style=\"font-family: Courier\">.npm\/@acme\/*<\/span>, pour exclure tous les packages de la recherche dans les d\u00e9p\u00f4ts distants.<\/li>\n<li><strong>Utilisez des mod\u00e8les d\u2019exclusion sur vos d\u00e9p\u00f4ts distants\u00a0!<\/strong> Vous savez pertinemment que <span style=\"font-family: Courier\">almo-common-utils<\/span> ne serait jamais trouv\u00e9 dans le Registre npm\u00a0? Dites-le \u00e0 votre gestionnaire de d\u00e9p\u00f4ts\u00a0! <a href=\"https:\/\/www.jfrog.com\/confluence\/display\/JFROG\/Repository+Management#RepositoryManagement-AvoidingSecurityRiskswithanExcludePattern\" target=\"_blank\" rel=\"noopener noreferrer\">Ajoutez vos d\u00e9pendances priv\u00e9es dans les mod\u00e8les d&apos;exclusion<\/a> et prot\u00e9gez-vous d\u2019une attaque s\u00e9rieuse (et assez intelligente) de la cha\u00eene d\u2019approvisionnement. c\u2019est tellement facile que ne pas le faire serait r\u00e9ellement une n\u00e9gligence.<\/li>\n<\/ol>\n<p>Nous allons finir avec&#8230;<\/p>\n<h2>la FAQ de Votre Avocat du Diable<\/h2>\n<p><strong>Q\u00a0: Les attaques par Substitution d&apos;Espace de Noms (ou ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb) constituent-elles un probl\u00e8me de s\u00e9curit\u00e9 uniquement si j\u2019utilise Artifactory\u00a0?<\/strong><\/p>\n<p>R\u00a0: Tout gestionnaire de d\u00e9p\u00f4ts qui permet une combinaison de d\u00e9p\u00f4ts locaux et relay\u00e9s sous une seule URL peut \u00eatre attaqu\u00e9 de la m\u00eame mani\u00e8re. <span style=\"font-weight: 400\">\u00a0La r\u00e9ponse est donc non, il ne s&apos;agit pas d&apos;un probl\u00e8me de s\u00e9curit\u00e9 li\u00e9 \u00e0 Artifactory.<\/span>\u00a0On peut inclure Sonatype Nexus, et d\u2019autres. Ce n\u2019est pas parce qu\u2019ils pr\u00e9sentent des failles, car ils fonctionnent pr\u00e9cis\u00e9ment comme pr\u00e9vu. Et tous ont et recommandent fortement l\u2019utilisation de meilleures pratiques similaires aux mod\u00e8les d&apos;exclusion (par exemple, les R\u00e8gles de Routage dans Sonatype Nexus).<\/p>\n<p><strong>Q\u00a0: Pourquoi les utilisateurs n\u2019utilisent-ils pas de packages scop\u00e9s publics\u00a0? N\u2019est-ce pas la voie \u00e0 suivre\u00a0?<\/strong><\/p>\n<p>R\u00a0: C\u2019est clairement la voie \u00e0 suivre. Mais npm n&apos;a introduit les packages scop\u00e9s que dans la version 2 et ce n&apos;est pas aussi courant dans le secteur que cela devrait l&apos;\u00eatre (du moins \u00e0 l&apos;heure actuelle). Mais vous\u00a0? Vous \u00eates \u00e0 la page, alors vous les utilisez, non\u00a0?<\/p>\n<p><strong>Q\u00a0: Pourquoi le Registre npm n\u2019impose-t-il pas des packages scop\u00e9s par des propri\u00e9taires v\u00e9rifi\u00e9s pour \u00e9viter les attaques par substitution d\u2019espace de noms\u00a0?<\/strong><\/p>\n<p>R\u00a0: C\u2019est une tr\u00e8s bonne question.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mise \u00e0 jour\u00a0: 1er\u00a0juin 2021. Vous avez demand\u00e9, nous avons r\u00e9pondu\u00a0! Une protection encore plus simple contre les attaques par confusion de d\u00e9pendance\u00a0!\u00a0Lire la suite &#8212; Aller Au-Del\u00e0 des Mod\u00e8les d\u2019Exclusion\u00a0: D\u00e9p\u00f4ts S\u00e9curis\u00e9s Avec R\u00e9solution Prioritaire. TL;DR Le registre npm est vuln\u00e9rable aux attaques par substitution d&apos;espaces de noms de la cha\u00eene d&apos;approvisionnement, \u00e9galement connu &hellip;<\/p>\n","protected":false},"author":73,"featured_media":69766,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[10153,9960,9370],"tags":[9964],"class_list":["post-106166","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-securite-et-devsecops","category-gestion-des-artefacts","category-artifactory-fr","tag-npm-fr"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.6 (Yoast SEO v22.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comment \u00c9viter Les Risques D&amp;apos;Attaques Par Confusion De D\u00e9pendance Et Substitution D&amp;apos;Espace De Noms Dues \u00c0 L&amp;apos;Utilisation De Registres NPM Et D&amp;apos;Autres D\u00e9p\u00f4ts Externes<\/title>\n<meta name=\"description\" content=\"2\u00a0r\u00e8gles simples qui vous \u00e9viteront d\u2019exposer des informations commerciales sensibles et vous prot\u00e9geront contre les attaques par Substitution d\u2019Espace de Noms et de Confusion de D\u00e9pendance\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/106166\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Encore un Cas d&amp;apos;Utilisation de Mod\u00e8les d&amp;apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)\" \/>\n<meta property=\"og:description\" content=\"2\u00a0r\u00e8gles simples qui vous \u00e9viteront d\u2019exposer des informations commerciales sensibles et vous prot\u00e9geront contre les attaques par Substitution d\u2019Espace de Noms et de Confusion de D\u00e9pendance\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/\" \/>\n<meta property=\"og:site_name\" content=\"JFrog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artifrog\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-28T09:28:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-19T14:03:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/speedmedia.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/http:\/\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"203\" \/>\n\t<meta property=\"og:image:height\" content=\"148\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"adia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@jfrog\" \/>\n<meta name=\"twitter:site\" content=\"@jfrog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"adia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/\"},\"author\":{\"name\":\"adia\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/person\/b3b548d5ef5d4a09a60c063aca4e2536\"},\"headline\":\"Encore un Cas d&apos;Utilisation de Mod\u00e8les d&apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)\",\"datePublished\":\"2022-12-28T09:28:32+00:00\",\"dateModified\":\"2023-06-19T14:03:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/\"},\"wordCount\":2029,\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png\",\"keywords\":[\"npm\"],\"articleSection\":[\"S\u00e9curit\u00e9 et DevSecOps\",\"Gestion des Artefacts\",\"Artifactory\"],\"inLanguage\":\"fr-FR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/\",\"url\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/\",\"name\":\"Comment \u00c9viter Les Risques D&apos;Attaques Par Confusion De D\u00e9pendance Et Substitution D&apos;Espace De Noms Dues \u00c0 L&apos;Utilisation De Registres NPM Et D&apos;Autres D\u00e9p\u00f4ts Externes\",\"isPartOf\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png\",\"datePublished\":\"2022-12-28T09:28:32+00:00\",\"dateModified\":\"2023-06-19T14:03:59+00:00\",\"description\":\"2\u00a0r\u00e8gles simples qui vous \u00e9viteront d\u2019exposer des informations commerciales sensibles et vous prot\u00e9geront contre les attaques par Substitution d\u2019Espace de Noms et de Confusion de D\u00e9pendance\",\"breadcrumb\":{\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png\",\"width\":203,\"height\":148,\"caption\":\"Exclude Patterns in Remote Repositories\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jfrog.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Encore un Cas d&apos;Utilisation de Mod\u00e8les d&apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jfrog.com\/fr\/#website\",\"url\":\"https:\/\/jfrog.com\/fr\/\",\"name\":\"JFrog\",\"description\":\"Deliver Trusted Software Releases at Speed and Scale\",\"publisher\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jfrog.com\/fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jfrog.com\/fr\/#organization\",\"name\":\"JFrog\",\"url\":\"https:\/\/jfrog.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"contentUrl\":\"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg\",\"width\":74,\"height\":73,\"caption\":\"JFrog\"},\"image\":{\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/artifrog\",\"https:\/\/x.com\/jfrog\",\"https:\/\/www.linkedin.com\/company\/455737\",\"https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg\",\"https:\/\/www.wikidata.org\/wiki\/Q98608948\"],\"description\":\"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.\",\"legalName\":\"Jfrog, Inc.\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/person\/b3b548d5ef5d4a09a60c063aca4e2536\",\"name\":\"adia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/jfrog.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b632c6f43bb8b7c0b2f98092b7eae6c7ae2fced89a69f7c37fd180fa93d803dc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b632c6f43bb8b7c0b2f98092b7eae6c7ae2fced89a69f7c37fd180fa93d803dc?s=96&d=mm&r=g\",\"caption\":\"adia\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comment \u00c9viter Les Risques D&apos;Attaques Par Confusion De D\u00e9pendance Et Substitution D&apos;Espace De Noms Dues \u00c0 L&apos;Utilisation De Registres NPM Et D&apos;Autres D\u00e9p\u00f4ts Externes","description":"2\u00a0r\u00e8gles simples qui vous \u00e9viteront d\u2019exposer des informations commerciales sensibles et vous prot\u00e9geront contre les attaques par Substitution d\u2019Espace de Noms et de Confusion de D\u00e9pendance","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/106166","og_locale":"fr_FR","og_type":"article","og_title":"Encore un Cas d&apos;Utilisation de Mod\u00e8les d&apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)","og_description":"2\u00a0r\u00e8gles simples qui vous \u00e9viteront d\u2019exposer des informations commerciales sensibles et vous prot\u00e9geront contre les attaques par Substitution d\u2019Espace de Noms et de Confusion de D\u00e9pendance","og_url":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/","og_site_name":"JFrog","article_publisher":"https:\/\/www.facebook.com\/artifrog","article_published_time":"2022-12-28T09:28:32+00:00","article_modified_time":"2023-06-19T14:03:59+00:00","og_image":[{"width":203,"height":148,"url":"https:\/\/speedmedia.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/http:\/\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png","type":"image\/png"}],"author":"adia","twitter_card":"summary_large_image","twitter_creator":"@jfrog","twitter_site":"@jfrog","twitter_misc":{"Written by":"adia","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#article","isPartOf":{"@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/"},"author":{"name":"adia","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/person\/b3b548d5ef5d4a09a60c063aca4e2536"},"headline":"Encore un Cas d&apos;Utilisation de Mod\u00e8les d&apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)","datePublished":"2022-12-28T09:28:32+00:00","dateModified":"2023-06-19T14:03:59+00:00","mainEntityOfPage":{"@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/"},"wordCount":2029,"publisher":{"@id":"https:\/\/jfrog.com\/fr\/#organization"},"image":{"@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage"},"thumbnailUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png","keywords":["npm"],"articleSection":["S\u00e9curit\u00e9 et DevSecOps","Gestion des Artefacts","Artifactory"],"inLanguage":"fr-FR"},{"@type":"WebPage","@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/","url":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/","name":"Comment \u00c9viter Les Risques D&apos;Attaques Par Confusion De D\u00e9pendance Et Substitution D&apos;Espace De Noms Dues \u00c0 L&apos;Utilisation De Registres NPM Et D&apos;Autres D\u00e9p\u00f4ts Externes","isPartOf":{"@id":"https:\/\/jfrog.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage"},"image":{"@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage"},"thumbnailUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png","datePublished":"2022-12-28T09:28:32+00:00","dateModified":"2023-06-19T14:03:59+00:00","description":"2\u00a0r\u00e8gles simples qui vous \u00e9viteront d\u2019exposer des informations commerciales sensibles et vous prot\u00e9geront contre les attaques par Substitution d\u2019Espace de Noms et de Confusion de D\u00e9pendance","breadcrumb":{"@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#primaryimage","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2021\/02\/08143840\/Exclude-Patterns-in-Remote-Repositories-203x148-1.png","width":203,"height":148,"caption":"Exclude Patterns in Remote Repositories"},{"@type":"BreadcrumbList","@id":"https:\/\/jfrog.com\/fr\/blog\/yet-another-case-for-using-exclude-patterns-in-remote-repositories\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jfrog.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Encore un Cas d&apos;Utilisation de Mod\u00e8les d&apos;Exclusion dans les D\u00e9p\u00f4ts Distants\u00a0: Attaque par Substitution d\u2019Espace de Noms (ou \u00ab\u00a0Confusion de D\u00e9pendance\u00a0\u00bb)"}]},{"@type":"WebSite","@id":"https:\/\/jfrog.com\/fr\/#website","url":"https:\/\/jfrog.com\/fr\/","name":"JFrog","description":"Deliver Trusted Software Releases at Speed and Scale","publisher":{"@id":"https:\/\/jfrog.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jfrog.com\/fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/jfrog.com\/fr\/#organization","name":"JFrog","url":"https:\/\/jfrog.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","contentUrl":"https:\/\/speedmedia2.jfrog.com\/08612fe1-9391-4cf3-ac1a-6dd49c36b276\/media.jfrog.com\/wp-content\/uploads\/2025\/05\/27095207\/Logo.svg","width":74,"height":73,"caption":"JFrog"},"image":{"@id":"https:\/\/jfrog.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artifrog","https:\/\/x.com\/jfrog","https:\/\/www.linkedin.com\/company\/455737","https:\/\/www.youtube.com\/channel\/UCh2hNg76zo3d1qQqTWIQxDg","https:\/\/www.wikidata.org\/wiki\/Q98608948"],"description":"We set out on our Liquid Software journey in 2008, with the mission to transform the way enterprises manage and release software updates. The world expects software to update continuously, securely, non-intrusively and without user intervention. This hyper-connected experience can only be enabled by automation with an end-to-end DevOps platform and a binary-centric focus. With this in mind, we\u2019ve developed the JFrog Platform, ushering in a new era of DevOps and DevSecOps standards that power continuous updates. More than a decade after our founding, with thousands of customers and millions of users globally, JFrog has become the \u201cDatabase of DevOps\u201d and the de-facto standard in release and update management.","legalName":"Jfrog, Inc.","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/person\/b3b548d5ef5d4a09a60c063aca4e2536","name":"adia","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/jfrog.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b632c6f43bb8b7c0b2f98092b7eae6c7ae2fced89a69f7c37fd180fa93d803dc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b632c6f43bb8b7c0b2f98092b7eae6c7ae2fced89a69f7c37fd180fa93d803dc?s=96&d=mm&r=g","caption":"adia"}}]}},"_links":{"self":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/106166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/comments?post=106166"}],"version-history":[{"count":1,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/106166\/revisions"}],"predecessor-version":[{"id":117206,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/posts\/106166\/revisions\/117206"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/media\/69766"}],"wp:attachment":[{"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/media?parent=106166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/categories?post=106166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jfrog.com\/fr\/wp-json\/wp\/v2\/tags?post=106166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}