{"meta":{"title":"Recherche et résolution de votre première vulnérabilité de code","intro":"Découvrez les principes de base de la sécurisation de votre code en résolvant une code scanning alerte dans un référentiel de démonstration.","product":"Bien démarrer","breadcrumbs":[{"href":"/fr/get-started","title":"Bien démarrer"},{"href":"/fr/get-started/learning-to-code","title":"Apprendre à coder"},{"href":"/fr/get-started/learning-to-code/finding-and-fixing-your-first-code-vulnerability","title":"Sécuriser votre code"}],"documentType":"article"},"body":"# Recherche et résolution de votre première vulnérabilité de code\n\nDécouvrez les principes de base de la sécurisation de votre code en résolvant une code scanning alerte dans un référentiel de démonstration.\n\nÀ mesure que vous apprenez à coder, il est normal d’introduire accidentellement des vulnérabilités dans vos projets. Si ces problèmes de sécurité ne sont pas résolus avant de partager votre travail, les attaquants peuvent les utiliser pour manipuler votre code et accéder aux données sensibles. Il est donc important de les identifier et de les corriger dès que possible.\n\nHeureusement, il existe des outils comme code scanning qui recherchent, expliquent et corrigent même automatiquement les vulnérabilités dans vos dépôts publics. Dans ce tutoriel, vous allez apprendre à sécuriser votre travail avec code scanning.\n\n## Configuration du référentiel de démonstration\n\nCommençons par la duplication d’un projet de démonstration avec une vulnérabilité de sécurité. Ce projet génère une page web simple, mais étant donné que nous ne déploierons pas le projet, il n’existe **aucun risque de sécurité** dans cet exercice.\n\n1. Naviguez jusqu’au référentiel [`new2code/code-scanning-demo`](https://github.com/new2code/code-scanning-demo).\n2. En haut à droite de la page, cliquez sur <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-repo-forked\" aria-label=\"repo forked icon\" role=\"img\"><path d=\"M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z\"></path></svg>**Fork**.\n3. Dans la page qui s’affiche, cliquez sur **créer un fork**.\n\n## Recherche de vulnérabilités dans votre code\n\nMaintenant que nous avons configuré le projet, nous allons activer code scanning pour votre fork afin de vérifier les vulnérabilités dans le code.\n\n1. De retour sur GitHub, sur la page d’accueil de votre dépôt, cliquez sur **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-shield\" aria-label=\"shield\" role=\"img\"><path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg> Security and quality**.\n2. Dans la ligne «Code scanning alertes », cliquez sur **Configurer code scanning**.\n3. Dans la section « Outils », en regard de «CodeQL analyse », sélectionnez **Configurer**, puis cliquez sur **Par défaut**.\n4. Dans la fenêtre contextuelle qui s’affiche, cliquez sur **Activer CodeQL**. Cela déclenche un GitHub Actions flux de travail qui analyse votre code pour détecter les vulnérabilités.\n5. Pour vérifier l’état de votre flux de travail, dans la barre de navigation, cliquez sur <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play icon\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg>**Actions**.\n6. Une fois le workflow terminé, dans la barre de navigation, cliquez sur **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-shield\" aria-label=\"shield\" role=\"img\"><path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg> Security and quality**.\n7. Pour afficher l’alerte code scanning découverte par le flux de travail, dans le volet de navigation latéral, cliquez <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-codescan\" aria-label=\"codescan icon\" role=\"img\"><path d=\"M8.47 4.97a.75.75 0 0 0 0 1.06L9.94 7.5 8.47 8.97a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0ZM6.53 6.03a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 1 0 1.06-1.06L5.06 7.5l1.47-1.47Z\"></path><path d=\"M12.246 13.307a7.501 7.501 0 1 1 1.06-1.06l2.474 2.473a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM1.5 7.5a6.002 6.002 0 0 0 3.608 5.504 6.002 6.002 0 0 0 6.486-1.117.748.748 0 0 1 .292-.293A6 6 0 1 0 1.5 7.5Z\"></path></svg>**Code scanning**, puis cliquez sur **Script intersites réfléchis**.\n\n## Comprendre une code scanning alerte\n\nMaintenant que code scanning a identifié une vulnérabilité dans le code, décomposons les informations fournies dans l’alerte.\n\n### Emplacement\n\nL’alerte affiche un petit aperçu d’un fichier, centré sur les lignes de code créant la vulnérabilité. Dans notre cas, la vulnérabilité est détectée sur la ligne 8 de notre fichier `index.js` , où nous implémentons l’entrée fournie par l’utilisateur dans notre site.\n\nSi nous examinons de plus près, nous pouvons voir que le problème sous-jacent se produit à la ligne 7, lorsque nous affectons `greet` à l’entrée utilisateur sans vérifier le code malveillant. Pour afficher une vue pas à pas de la vulnérabilité dans notre code, dans la légende sous les lignes vulnérables, cliquez sur **afficher les chemins d’accès**.\n\n![Capture d’écran de l’emplacement d’une alerte code scanning. Un bouton « Afficher les chemins » est décrit en orange.](/assets/images/help/repository/code-scanning-alert-location-learners.png)\n\n### Description et recommandation\n\nSous la préversion du fichier, code scanning fournit une description plus détaillée de la vulnérabilité. Pour afficher le correctif recommandé, ainsi que des exemples de code vulnérable et fixe, cliquez sur **Afficher plus**<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-chevron-down\" aria-label=\"chevron down icon\" role=\"img\"><path d=\"M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z\"></path></svg>.\n\n![Capture d’écran des détails d’une alerte code scanning. Une liste déroulante intitulée « Afficher plus » est décrite en orange.](/assets/images/help/repository/code-scanning-alert-details-learners.png)\n\nDans notre cas, la recommandation consiste à nettoyer l’entrée utilisateur avant de l’utiliser. Cela signifie que nous devons vérifier l’entrée pour du code malveillant, puis la nettoyer si nécessaire.\n\n> \\[!TIP] Si vous ne comprenez pas entièrement le correctif recommandé, essayez de [demander Copilot Chat](https://github.com/copilot) qu’on vous l’explique.\n\n### Durée\n\nEnfin, vous pouvez voir la chronologie de l’alerte en bas de la page. Notre chronologie contient la validation où la vulnérabilité a été détectée pour la première fois et sera mise à jour automatiquement lorsque nous corrigeons la vulnérabilité.\n\n![Capture d’écran de la chronologie d’une alerte code scanning.](/assets/images/help/repository/code-scanning-alert-timeline-learners.png)\n\n## Résolution automatique d’une vulnérabilité\n\nPour sécuriser notre projet rapidement et facilement, nous allons utiliser GitHub Copilot Autofix pour code scanning.\n\n1. Sous le titre de l’alerte, dans la zone vous suggérant « Accélérez la correction de cette alerte à l’aide de Copilot Autofix pour CodeQL », cliquez sur <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-shield-check\" aria-label=\"shield check icon\" role=\"img\"><path d=\"m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z\"></path></svg>**Générer la solution**.\n2. Après Copilot avoir généré la suggestion de correctif, il décrit les modifications qu’il suggère, affiche un aperçu des modifications et appelle toutes les dépendances ajoutées. Prenez un moment pour lire le travail de Copilot.\n3. Pour créer un pull request avec le correctif, cliquez sur **Effectuer le commit dans une nouvelle branche**, puis cliquez sur **Effectuer le commit de la modification**.\n4. Une fois que le brouillon de pull request est créé, en bas de page, cliquez sur **Prêt pour l'examen** pour permettre sa fusion.\n5. Pour appliquer le correctif, cliquez sur **Fusionner la demande de tirage**, puis cliquez sur **Confirmer la fusion**.\n\n   Une fois que le pull request est fusionné et que le code scanning flux de travail s'exécute à nouveau, l'alerte sera fermée automatiquement et le commit qui corrige la vulnérabilité sera ajouté à la chronologie.\n\n> \\[!NOTE] Dans les projets réels, vous devez toujours passer en revue les modifications suggérées avant Copilot de les valider dans votre code.\n\n## Étapes suivantes\n\nMaintenant que vous avez essayé code scanning sur un référentiel de démonstration, **activez-le sur vos propres projets** pour rechercher et corriger rapidement les vulnérabilités actuelles et futures.\n\nMaintenant que vous avez sécurisé le code que vous avez écrit vous-même, passez à l’étape suivante pour sécuriser votre code en vérifiant la sécurité de vos **dépendances**. Consultez « [Recherchez et corrigez votre première vulnérabilité de dépendance](/fr/get-started/learning-to-code/finding-and-fixing-your-first-dependency-vulnerability) »."}