L’injection SQL (SQL Injection) est une technique d’attaque qui consiste à insérer du code SQL malveillant dans une requête destinée à une base de données, en exploitant une absence de filtrage des données fournies par l’utilisateur. Cette unité pose les bases conceptuelles indispensables avant d’entrer dans le détail technique des chapitres suivants.
Le principe général
La plupart des applications web construisent des requêtes SQL en insérant directement des valeurs saisies par l’utilisateur (identifiant, mot de passe, paramètre d’URL) dans le texte de la requête. Si ces valeurs ne sont pas correctement filtrées ou échappées, un attaquant peut insérer des caractères SQL spéciaux (apostrophes, points-virgules, mots-clés) qui modifient la structure logique de la requête d’origine.
Pourquoi cette faille est-elle si répandue ?
Historiquement, de nombreux frameworks et tutoriels ont encouragé la construction de requêtes par simple concaténation de chaînes de caractères, une pratique rapide à écrire mais intrinsèquement dangereuse dès qu’une donnée utilisateur entre dans l’équation. Malgré des décennies de sensibilisation, cette faille figure encore régulièrement dans le top des vulnérabilités web les plus exploitées.
Les grandes familles d’injection SQL
On distingue plusieurs techniques, que nous détaillerons chapitre par chapitre :
- Injection classique (in-band) : le résultat de l’injection est directement visible dans la réponse de l’application
- Injection UNION : combine le résultat d’une requête malveillante avec celui de la requête légitime
- Injection aveugle (blind) : aucune donnée n’est affichée, l’attaquant déduit l’information bit par bit via le comportement de l’application
- Injection hors bande (out-of-band) : les données volées transitent par un canal différent (DNS, HTTP sortant)
Ce que l’attaquant peut obtenir
Une injection SQL réussie peut permettre de contourner une authentification, d’extraire l’intégralité d’une base de données (identifiants, mots de passe, données personnelles), de modifier ou supprimer des données, voire dans certains cas d’exécuter des commandes sur le serveur hébergeant la base de données.
Pourquoi apprendre ces techniques ?
Comprendre comment une injection SQL se déroule techniquement est la seule façon sérieuse de savoir la détecter et la corriger. Les développeurs qui ont déjà manipulé concrètement une injection abordent différemment l’écriture de leurs requêtes : ils privilégient naturellement les requêtes préparées et la validation systématique des entrées.
Méthodologie du cours
Les chapitres 2 à 6 construisent progressivement une exploitation complète : fonctionnement des requêtes dynamiques, injection classique, UNION, puis injection aveugle et outils d’automatisation. Les chapitres 7 et 8 inversent la perspective pour se concentrer exclusivement sur la détection et la correction, point d’aboutissement de ce cours.
- Une injection SQL exploite l’absence de séparation entre code SQL et données utilisateur
- Elle reste l’une des failles web les plus critiques malgré son ancienneté
- Les familles principales sont l’injection classique, UNION, aveugle et hors bande
- L’objectif final du cours est la détection et la correction, pas l’attaque de tiers

-
Add a note