Injection SQL : comment et pourquoi elle fonctionne
Comprenez les injections SQL classiques, aveugles et hors bande, ainsi que les raisons pour lesquelles les requêtes paramétrées les empêchent.
Injection SQL : comment et pourquoi elle fonctionne est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que l'injection SQL ?
Injection SQL (SQLi) se produit lorsque des données saisies par l'utilisateur sont incluses dans une query SQL sans assainissement approprié, ce qui permet aux attaquants de manipuler la logique de la query. Il s'agit de l'une des vulnérabilités web les plus anciennes et les plus dommageables.
Fonctionnement de l'injection SQL
Un formulaire de connexion exécute une query : SELECT * FROM users WHERE username='INPUT' AND password='INPUT'
Si l'attaquant saisit ' OR 1=1-- comme nom d'utilisateur, la query devient : SELECT * FROM users WHERE username='' OR 1=1--' AND password='...' — elle renvoie alors tous les utilisateurs.
Types d'injection SQL
Variantes de SQLi :
- En bande : les résultats sont renvoyés directement dans la réponse (classique, fondée sur les erreurs)
- Aveugle booléenne : aucune sortie directe ; les données sont déduites des réponses vrai/faux
- Aveugle fondée sur le temps : les données sont déduites des délais de réponse (
SLEEP(5)) - Hors bande : les données sont exfiltrées par des requêtes DNS/HTTP
Injection fondée sur UNION
Les attaques UNION ajoutent les résultats de query contrôlées par l'attaquant :
-- Discover number of columns:
id=1 ORDER BY 3--
-- Extract data:
id=1 UNION SELECT username,password,NULL FROM users--Injection fondée sur les erreurs
Les messages d'erreur révèlent la structure de la base de données. L'attaquant saisit des données qui provoquent une erreur de syntaxe, et le message d'erreur qui en résulte divulgue des noms de tables, des noms de colonnes ou la version de la base de données. Désactivez les messages d'erreur détaillés en production.
Injection SQL aveugle
Lorsqu'aucune sortie n'est visible, les attaquants utilisent des conditions booléennes :
-- If admin exists, page loads normally:
id=1 AND (SELECT COUNT(*) FROM users WHERE username='admin')=1--
-- Time-based:
id=1; IF(1=1) WAITFOR DELAY '0:0:5'--sqlmap : injection SQL automatisée
sqlmap automatise la détection et l'exploitation des injections SQL. Il peut extraire des bases de données, lire des fichiers et même execute des commandes OS si l'utilisateur de la base de données dispose de privilèges suffisants.
sqlmap -u "http://target.com/page?id=1" --dbs
sqlmap -u "http://target.com/page?id=1" -D webapp -T users --dumpPrévenir l'injection SQL : query paramétrées
La principale défense consiste à utiliser des query paramétrées (instructions préparées). Les données saisies par l'utilisateur sont transmises comme paramètre et ne sont jamais concaténées dans la chaîne de la query :
# Python (safe):
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
# Node.js (safe):
pool.query("SELECT * FROM users WHERE id = $1", [userId])Protection par ORM
L'utilisation d'un ORM (SQLAlchemy, Hibernate, Sequelize) empêche généralement les injections SQL, car les query sont construites au moyen d'abstractions sûres. Cependant, les méthodes de query brutes (execute(), query()) qui utilisent l'interpolation de chaînes contournent les protections de l'ORM.
Validation des données saisies et WAF
Défenses supplémentaires :
- Validez les types de données saisies et autorisez-les par liste blanche (entiers, adresses e-mail)
- Utilisez un pare-feu applicatif web (WAF) pour détecter les schémas d'injection
- Utilisez des comptes de base de données aux privilèges minimaux (sans DROP ni UNION dans les query en lecture seule)
- Utilisez des procédures stockées (elles réduisent l'exposition, mais ne constituent pas une solution complète)
Impact de l'injection SQL
Une injection SQL réussie peut entraîner : l'extraction complète de la base de données, le contournement de l'authentification, la modification ou la suppression de données, la lecture de fichiers du serveur (LOAD_FILE), l'écriture de web shells et l'exécution de commandes OS via xp_cmdshell (MSSQL).
Vérification rapide : injection SQL
Quelle est la principale défense contre l'injection SQL ?
Récapitulatif de la leçon
L'injection SQL manipule les requêtes de base de données au moyen d'entrées utilisateur non assainies. Les types d'attaque comprennent les attaques classiques, les attaques booléennes à l'aveugle, les attaques temporelles et les attaques fondées sur UNION. La principale défense consiste à utiliser des requêtes paramétrées : ne concaténez jamais les entrées utilisateur dans SQL. Utilisez les ORM avec prudence, appliquez le principe du moindre privilège aux comptes de base de données et désactivez les messages d'erreur détaillés.
Questions Fréquemment Posées
La leçon « Injection SQL : comment et pourquoi elle fonctionne » est-elle gratuite ?
Oui — le texte complet de « Injection SQL : comment et pourquoi elle fonctionne » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Injection SQL : comment et pourquoi elle fonctionne » ?
Comprenez les injections SQL classiques, aveugles et hors bande, ainsi que les raisons pour lesquelles les requêtes paramétrées les empêchent. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Injection SQL : comment et pourquoi elle fonctionne » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Injection SQL : comment et pourquoi elle fonctionne
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- Mauvaise configuration de sécurité et services exposés