SQLi · SQL Injection

Des guillemets. Un accès admin.

Un payload dans le champ identifiant suffit à réécrire la requête SQL. La vérification du mot de passe disparaît. L'attaquant entre en tant qu'admin sans connaître le moindre credential.

  • Auth bypass
  • Payload SQL
  • Accès admin
  • OWASP A03

Simulation pas à pas

Suivez l'attaque étape par étape

monentreprise.com/login
Portail de connexion
MonEntreprise — Portail RH

Connexion à votre espace

Identifiant

utilisateur@entreprise.com

Mot de passe

••••••••
Se connecter
Étape 1 sur 4

Un formulaire de connexion standard

La porte d'entrée de l'application avec un identifiant et mot de passe

Chaque champ de saisie est une surface d'attaque

Formulaires de connexion, barres de recherche, filtres, paramètres d'URL... Partout où une valeur utilisateur est transmise à une base de données. Si le code concatène directement l'entrée dans la requête SQL, la faille existe par construction.

Chiffres clés

Une faille ancienne, toujours exploitée

OWASP Top 10

#0

Injection · A03:2021
Pour exploiter

≤ 0 min

un endpoint vulnérable
Des apps vulnérables

0%

qui concaténent l'input
Pour corriger

0 ligne

avec une requête paramétrée

Protection

Comment s'en protéger

L'injection SQL se corrige dans le code. Ces quatre mesures ferment la porte durablement.

  • Requêtes paramétrées

    Séparez toujours le code SQL des données : requêtes préparées ou ORM, jamais de concaténation de saisie utilisateur.

  • Validation côté serveur

    Contrôlez le format attendu de chaque champ (liste blanche) avant tout traitement, même si le navigateur l'a déjà fait.

  • Moindre privilège

    Le compte de base de données de l'application n'accède qu'aux tables et aux droits strictement nécessaires.

  • Détection et tests

    WAF, journalisation des requêtes anormales et tests d'intrusion réguliers pour repérer une faille avant un attaquant.

Démo technique

Testez par vous-même

Cette simulation vous permet d'injecter un payload SQL réel et d'observer la requête générée en direct. Réservée aux équipes techniques et aux formateurs.

SQL Injection

Connexion falsifiée par payload

Simulation front-end

SQL généré :

SELECT * FROM users WHERE email = '' AND password = '';

Payload d'authentification

' OR '1'='1' -- 

Cette chaîne force la condition à vrai, contournant l'authentification si la requête n'est pas paramétrée.

Pourquoi c'est critique

Ici, l'application utilise directement les valeurs saisies pour construire une requête SQL. Un attaquant peut modifier la requête et se connecter comme un autre utilisateur.

Pour un décideur, cela signifie que des données sensibles peuvent être exposées sans que le code sache qu'il a été manipulé.

Comment se protéger

  • Ne jamais concaténer du texte utilisateur dans une requête SQL.
  • Utiliser des requêtes paramétrées.
  • Valider et normaliser les entrées.
  • Limiter les permissions de la base de données.
SELECT * FROM users WHERE email = $1 AND password = $2; -- valeurs liées sans concaténation

FAQ

Questions fréquentes

Qu'est-ce qu'une injection SQL ?

Une injection SQL est une vulnérabilité applicative qui permet à un attaquant d'insérer du code SQL malveillant dans une requête de base de données. Elle peut permettre de contourner l'authentification, extraire des données, modifier ou supprimer des enregistrements, et parfois exécuter des commandes système.

Comment fonctionne le contournement d'authentification par SQL injection ?

En injectant le payload ' OR '1'='1 dans un champ de connexion, un attaquant transforme la requête SQL en une condition toujours vraie. La requête devient : SELECT * FROM users WHERE username='' OR '1'='1' -- AND password='...', ce qui retourne tous les utilisateurs et accorde l'accès admin.

Comment prévenir les injections SQL ?

Les protections contre les injections SQL sont : utiliser des requêtes préparées (prepared statements) et des ORM, valider et encoder toutes les entrées utilisateur, appliquer le principe du moindre privilège sur les comptes de base de données, et utiliser un WAF (Web Application Firewall).

Quels outils détectent les injections SQL ?

Les outils de détection des injections SQL incluent : sqlmap (automatisé, open-source), Burp Suite (proxy d'interception), OWASP ZAP (scanner de vulnérabilités), et les solutions DAST intégrées dans les pipelines CI/CD. Les WAF (ModSecurity, Cloudflare) les bloquent en production.

Formez vos équipes avec un expert

Ateliers de sensibilisation sur mesure, simulations d'attaques et formations pour ancrer les bons réflexes dans votre organisation.