Bienvenue dans le Bac à Sable !


      Retour à la liste des mises en situation.


Imaginez que ce qui suit est un endroit pour se connecter en tant qu'administrateur.
Le mot de passe est "123456" (qui d'ailleurs n'est pas sécurisé du tout)
Connectez vous donc avec 123456 et vérifiez que ça fonctionne.
Puis cliquez sur Actualiser la page et réessayez de vous connecter avec
' or '1'='1



Explications et contre-mesures

L'injection SQL est une attaque très dangereuse.
Lorsque les données d'un utilisateur ne sont pas filtrées, ce dernier peut communiquer directement avec la base de données du site.
Il est donc possible de récupérer les mots de passe des utilisateurs depuis cette base de données ou comme on l'a vu de se connecter directement sans fournir de mot de passe valide.
L'exemple si dessus formera une requète SQL comme :
SELECT id FROM users WHERE name = 'Admin' AND password = '' OR '1'='1'
Ce qui signifie (en simplifiant) : Sélectionner les utilisateurs dont le nom est 'Admin' ET dont le mot de passe est vide OU si 1 est égal à 1.
Puisque 1 est toujours égal à 1, la condition est vérifiée et on est donc connecté comme Administrateur.
Plus d'informations.