Forums
Parlez de tout ce que vous voulez!
Les injections figurent parmi les vulnérabilités les plus dangereuses du paysage numérique actuel.
Classées en tête du OWASP Top 10, elles permettent à un attaquant d’injecter du code
malveillant dans une requête destinée à un interpréteur (SQL, OS, LDAP, XML, etc.).
Cela peut compromettre la confidentialité, l’intégrité ou la disponibilité des données.
Une injection survient lorsqu’une application accepte des données non fiables comme des commandes à exécuter.
Ces données peuvent être insérées dans :
L’injection est rendue possible par le manque de validation des entrées utilisateur,
associé à une concaténation directe dans la logique applicative.
Considérons une requête SQL naïve :
SELECT * FROM users WHERE username = '$user' AND password = '$pass';
Un utilisateur malveillant peut entrer :
user = admin' --
Ce qui donne la requête :
SELECT * FROM users WHERE username = 'admin' --' AND password = '';
Le commentaire SQL (--
) ignore tout ce qui suit, contournant ainsi l’authentification.
L’attaquant est désormais connecté en tant qu’admin !
Type | Description | Conséquence possible |
---|---|---|
SQL Injection | Manipule les requêtes aux bases de données | Fuite de données, modification ou suppression de données |
Command Injection | Injection de commandes dans le système d’exploitation | Exécution de commandes arbitraires sur le serveur |
LDAP Injection | Manipule les requêtes d’annuaire | Contournement d’authentification ou modification de comptes |
XML Injection | Modification des structures XML ou appels externes | Exfiltration de données via XXE |
// Exemple en PHP avec PDO
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :user AND password = :pass");
$stmt->execute(['user' => $user, 'pass' => $pass]);
Créez une page de connexion simple en PHP sans protections.
Puis, essayez d’entrer : ' OR '1'='1
comme identifiant.
Ensuite, corrigez votre code en utilisant des requêtes préparées avec PDO
ou MySQLi
.
Vous constaterez que l’injection ne fonctionne plus 💪.
Les injections représentent un danger critique dans toute application connectée à une base de données
ou un service d’interprétation. En tant que développeur ou administrateur, vous devez adopter une approche
“zero trust” pour les entrées utilisateurs. Les requêtes préparées, les validations et une bonne hygiène de code
sont vos meilleures défenses.
✅ À retenir : Une seule entrée non filtrée peut suffire à compromettre tout un système.
1
Voix
0
Réponse
Mots clés
Ce sujet n a pas de tags