Une injection SQL est une technique de piratage informatique qui consiste à insérer du code SQL malveillant dans une requête envoyée à une base de données, généralement via un formulaire ou une URL.
🔎 Principe simple
Quand un site web demande des informations (ex : identifiant + mot de passe), il construit souvent une requête SQL comme :
SELECT * FROM utilisateurs WHERE nom = 'admin' AND mot_de_passe = '1234';
👉 Si le site est mal sécurisé, un attaquant peut entrer quelque chose comme :
admin' OR '1'='1
Ce qui donne :
SELECT * FROM utilisateurs WHERE nom = 'admin' OR '1'='1';
💥 Résultat : la condition est toujours vraie → l’attaquant peut se connecter sans mot de passe.
⚠️ Pourquoi c’est dangereux ?
Une injection SQL peut permettre de :
- accéder à des comptes sans autorisation
- voler des données (mots de passe, infos personnelles)
- modifier ou supprimer des données
- parfois prendre le contrôle complet du serveur
🛡️ Comment s’en protéger ?
Les développeurs utilisent plusieurs techniques :
- requêtes préparées (prepared statements) ✅ (la meilleure solution)
- validation et filtrage des entrées utilisateur
- utilisation d’ORM (comme Django ORM ou Hibernate)
- limiter les permissions de la base de données
🧠 À retenir
👉 Une injection SQL exploite une mauvaise gestion des entrées utilisateur
👉 C’est l’une des failles de sécurité les plus connues et dangereuses
Si tu veux, je peux te montrer un exemple concret en code (Python, PHP, etc.) ou comment tester une faille 👨💻
