La plus grande usurpation d'identité dans l'histoire a été réalisée en 2007 par l'exploitation d'une vulnérabilité d'injection SQL: voir "des attaques par injection SQL conduit à Heartland, Hannaford violations" (ComputerWorld, 8/18/2009).
OWASP déclaré en 2007 que les attaques par injection (dont l'injection SQL est un exemple) continuent à être l'un des les logiciels les plus courants des problèmes de sécurité.
Vous pouvez également rechercher les dernières SQL injection de nouvelles et de trouver beaucoup de cas signalés chaque mois: http://news.softpedia.com/newsTag/SQL+injection
Cependant, l'exemple de la XKCD dessin animé n'est pas nécessairement le type le plus commun de l'exploit. Suppression d'une table par l'exécution d'une deuxième instruction SQL dans une requête ne serait probablement pas gain de l'attaquant beaucoup dans la façon de précieuses données, il serait tout simplement du vandalisme.
Aussi, certains interface de requête d'interdire le multi-requête par défaut de toute façon. La base de données de l'API client ne s'exécute que dans un seul état donné de la chaîne SQL, indépendamment des points-virgules. Cela va à l'encontre de l'exemple montré dans le dessin animé.
remarque: AOP de l' query()
méthode est connue à l'appui de multi-requête par défaut. Donc, il est sensible à la XKCD-attaque de style.
Comme d'autres personnes l'ont souligné, le plus probable, le risque est qu'une injection SQL va modifier la logique des expressions SQL, et appliquer à votre requête de lignes supplémentaires en plus de ceux que vous avez prévu.
Par exemple:
$sql = "UPDATE Users SET PASSWORD = MD5('" . $_POST["password"] . "'||salt) " .
"WHERE user_id = " . $_POST["userid"];
Ce qui se passe quand j'ai envoyer une demande avec le paramètre userid
ensemble de la chaîne de caractères 123 OR userid=456
? Je voudrais réinitialiser mon mot de passe (code d'utilisateur 123) ainsi que le mot de passe du nom d'utilisateur 456. Même le hachage du mot de passe par utilisateur sel ne serait pas protéger contre cela. Maintenant je peux me connecter en compte.
Il y a beaucoup de façons d'injection SQL peut être commise.