Sécurité avec GitHub Copilot

Développement logiciel avec GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Quand les bugs deviennent des failles

 

nanobanana: half: Un développeur repère un petit bug anodin sur l’écran d’un ordinateur portable d’un côté, et de l’autre une silhouette sombre avec des données s’échappant d’un serveur, illustration vectorielle plate contrastant les deux scénarios

 

  • Du code vulnérable ressemble souvent à du code classique
  • Il passe les tests, les revues et parfois part en prod
  • 🤖 Copilot peut agir comme relecteur sécurité
Développement logiciel avec GitHub Copilot

Une fonction vulnérable

 

def get_user(username):
    query = f"SELECT * FROM users \
WHERE username = '{username}'"
    return db.execute(query)

 

Un attaquant peut injecter du SQL :

  • Contourner totalement l’authentification
  • Vider toute la table users
  • Supprimer votre base
Développement logiciel avec GitHub Copilot

[capture d’écran]

Développement logiciel avec GitHub Copilot

[capture d’écran]

Développement logiciel avec GitHub Copilot

Prompts sécurité efficaces

 

Revue ciblée

Analyser #selection pour des failles d’injection SQL et XSS

 

Analyse de tout le code

Analyse @workspace des identifiants ou clés API en dur

Développement logiciel avec GitHub Copilot

[capture d’écran]

Développement logiciel avec GitHub Copilot

De la revue à la prévention

nanobanana: half: Un bouclier de sécurité lumineux entouré d’icônes d’alerte représentant différents types de menaces informatiques, illustration vectorielle plate sur fond épuré

 

Génération défensive de code

Ajoutez une validation des entrées à cet endpoint. Rejetez les types inattendus et imposez des limites de longueur.

 

Ne vous contentez pas de trouver les failles — prévenez-les

Développement logiciel avec GitHub Copilot

Intégrer la sécurité à chaque suggestion

 

.github/copilot-instructions.md

## Security standards
- Use parameterized queries
- Never hardcode credentials or API keys
- Validate and sanitize all user input
- Use bcrypt or argon2 for password hashing
Développement logiciel avec GitHub Copilot

Règles de sécurité spécifiques au langage

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

- Use secrets module instead of random for tokens
- Escape all user input in Jinja2 templates

 

✅ La sécurité fait partie de votre façon de coder

Développement logiciel avec GitHub Copilot

Passons à la pratique !

Développement logiciel avec GitHub Copilot

Preparing Video For Download...