Easy-Micro

ESPACEMEMBRE SQL
Sécurité SQL

Sécurité et SQL

Formation MySQL par Easy-Micro Injection SQL

Une injection SQL est l'exploitation d'une faille de sécurité d'une application interagissant avec une base de données (comme un formulaire). Le but est d'injecter une requête SQL non prévue par le système et pouvant compromettre sa sécurité.

Imaginons un formulaire de type accès privé avec ce traitement classique de requête SQL saisie en PHP
$requete = "SELECT * WHERE nom = '".$nom."' AND pwd = '".$mdp."'";
Soit la requête
SELECT * WHERE nom = 'durand' AND pwd = 'vfsdfvv';

Si le script PHP qui exécute cette requête ne vérifie pas les données entrantes, il existe une grosse faille de sécurité. Le pirate pourra saisir dans le champ nom "durand --" et n'importe quel mot de passe.

La requête devient
SELECT * WHERE nom = 'durand --' AND pwd = 'vfsdfvv';
Les caractères -- marquent le début d'un commentaire en SQL.
La requête est donc équivalente à :
SELECT * WHERE nom = 'durand';

Pour le mot de passe, le pirate pourra injecter le code suivant : ' or 1=1--
L'apostrophe indique la fin de la zone de frappe de l'utilisateur, le code "or 1=1" demande au script si 1=1 est vrai, or c'est toujours le cas, et -- indique le début d'un commentaire.

La solution consiste à traiter les chaînes de caractères entrées par l'utilisateur avec la fonctions PHP mysql_real_escape_string qui transforme la chaîne ' -- en \' --


< Page précédente SQL Page suivante >