Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Injection SQL
Le SQL est un langage de requête. Un langage de requête est un langage informatique utilisé pour accéder aux données d'une base de données L'injection SQL est une méthode d'attaque très connue. C'est un vecteur d'attaque extrêmement puissant quand il est bien exploité. Il consiste à modifier une requête SQL en injectant des morceaux de code non filtrés, généralement par le biais d'un formulaire.
Si vous voulez vous connecter à l'espace d'administration d'un site, on va vous demander de remplir les champs "login" et "password". Ces deux informations vont être utilisées pour chercher dans la base de données du site si votre compte existe. L'injection SQL constiste à envoyer dans les champs de connexion du code qui va être rajoutée à la suite de la requête SQL pour en modifier son comportement et, par exemple, de s'authentifier sans mot de passe.
//voilĂ une requĂŞte SQL
$req = $bdd->query("SELECT * FROM utilisateurs WHERE login='$login' AND password='$password'");
?>
Elle peut se traduire par "SĂ©lectionne tout dans la colonne utilisateurs oĂą le login = votrePseudo et mot de passe = votremotdepasse" si la requĂŞte est valide alors votre compte existe.
Si maintenant j'utilise comme pseudonyme "Flroian09#'" la requĂŞte devient
$req = $bdd->query("SELECT * FROM utilisateurs WHERE login='florian09'# AND password='$password'");
Sachant que le '#' est une balise pour indiquer un commentaire, la requĂŞte devient :
$req = $bdd->query("SELECT * FROM utilisateurs WHERE login='florian09'#")
Du coup le mot de passe n'est plus vérifié !
#Pratique
Titre | Date de sortie | Genre |
---|---|---|
Avatar | 2009 | Fantasy |
Matrix | 1999 | Science-fiction |
Les Goonies | 1985 | Ation |
La requête dans l'exercice ci-dessous peut se traduire par : "Sélectionne tout dans la colonne titre où le genre vaut aventure". Fais en sorte de transformer la requête pour que tous les genres soient sélectionnés.
Besoin d'aide ?
Utilise le '#' pour commenté la partie du code que tu veux rendre inopérante.