Glossaire

Injection SQL

Vulnérabilité permettant à un attaquant d'injecter des requêtes SQL malveillantes dans les champs d'un formulaire pour manipuler la base de données d'une application web.

L'injection SQL (SQLi) figure dans le Top 10 OWASP depuis des années. Elle survient quand une application intègre directement les données utilisateur dans une requête SQL sans validation ni échappement.

Exemple classique :

sql

-- Input utilisateur : ' OR '1'='1
SELECT * FROM users WHERE username='' OR '1'='1' AND password=''
-- Résultat : retourne tous les utilisateurs (bypass auth)

Types d'injections SQL :

  • In-band : résultats visibles directement dans la réponse HTTP

  • Blind boolean-based : déduction bit par bit via true/false

  • Blind time-based : déduction via des délais (SLEEP, WAITFOR)

  • Out-of-band : exfiltration via DNS ou HTTP vers un serveur tiers

Outils de détection : sqlmap, Havij, scanners DAST (Burp Suite, OWASP ZAP)

Contremesures :

  • Requêtes préparées (prepared statements) — solution principale

  • ORM avec paramétrage (Drizzle, Prisma, SQLAlchemy)

  • Validation stricte des entrées (whitelist)

  • Principe du moindre privilège sur les comptes DB

  • WAF en complément (jamais seul)

Question fréquente

Comment tester si une application est vulnérable aux injections SQL ?

Commencez par injecter des caractères spéciaux comme une apostrophe (') dans les champs de formulaire et observez les erreurs. Pour un test complet et légal (sur vos propres apps), utilisez sqlmap avec sqlmap -u "URL" --dbs. En production, utilisez un scanner DAST comme Burp Suite.

Termes associés
Outils associés