Aller au contenu

Injection SQL : SQL injection

Sécurité

Attaque qui glisse du code SQL dans une donnée venue de l'extérieur, champ de formulaire, en-tête HTTP ou valeur relue en base, pour que le moteur de la base l'exécute comme une instruction légitime. Elle exploite les applications qui assemblent leurs requêtes en collant du texte au lieu de passer des paramètres.

Schéma de séquence entre trois acteurs : l'attaquant, l'application et la base de données. D'abord, l'attaquant saisit « ' OR '1'='1 » dans le champ identifiant de l'application. Premier cas, la requête est concaténée : l'application envoie à la base une condition toujours vraie. La base renvoie toutes les lignes de la table et l'application accorde l'accès sans mot de passe. Second cas, la requête est paramétrée : la saisie est traitée comme une valeur. La base ne trouve aucun utilisateur et l'accès est refusé.

Mécanisme : L'application concatène une saisie directement dans le texte de la requête. Un guillemet bien placé ferme la chaîne prévue, et tout ce qui suit devient du code que la base exécute sans broncher.

Conséquences : Selon les droits du compte applicatif : contournement d'authentification avec un `' OR '1'='1`, lecture de tables entières, modification ou suppression de données, parfois exécution de commandes sur le serveur. Une seule entrée vulnérable suffit.

Parade : Les requêtes paramétrées séparent le code de la donnée : la saisie reste une valeur, jamais une instruction. Vingt ans de métier apprennent que la liste noire de caractères interdits oublie toujours celui qui comptait, et bloque en prime tous les clients nommés O'Brien.

Défense en profondeur : Un compte de base aux privilèges minimaux limite les dégâts, un ORM bien employé évite la concaténation à la main. Un WAF filtre une partie des tentatives en appoint, sans jamais remplacer une requête correctement écrite.

Explication de la marmotte

Imagine un guichet où tu remplis une fiche avec ton nom. L'employé recopie ta réponse mot pour mot dans un ordre qu'il transmet à l'archiviste : « Apporte le dossier de [ton nom] ». Si tu écris comme nom « Dupont, et aussi tous les dossiers de la ville », l'archiviste, qui obéit sans réfléchir, apporte tout. Une injection, c'est exactement ça : glisser des ordres à l'endroit où on attendait une réponse. La parade consiste à mettre ta réponse dans une case à part, que l'archiviste lit toujours comme un nom, jamais comme une consigne.

Où ce terme est utilisé

← Tout le glossaire