Injection SQL

Définition - Que signifie injection SQL?

Une injection SQL est une attaque informatique dans laquelle un code malveillant est intégré dans une application mal conçue puis transmis à la base de données principale. Les données malveillantes produisent alors des résultats de requête de base de données ou des actions qui n'auraient jamais dû être exécutées.

Definir Tech explique l'injection SQL

Passons en revue un exemple d'attaque par injection SQL:

Une application exécutant les opérations d'une banque contient des menus qui peuvent être utilisés pour rechercher les détails du client à l'aide de points de données tels que le numéro de sécurité sociale du client. En arrière-plan, l'application appelle une requête SQL qui s'exécute dans la base de données en transmettant les valeurs de recherche entrées comme suit:

SELECT nom_client, téléphone, adresse, date_de_ naissance WHERE no_sec_social = 23425

Dans cet exemple de script, l'utilisateur entre la valeur 23425 dans la fenêtre du menu de l'application, en demandant à l'utilisateur d'entrer le numéro de sécurité sociale. Ensuite, en utilisant la valeur fournie par l'utilisateur, une requête SQL s'exécute dans la base de données.

Un utilisateur ayant des connaissances SQL peut comprendre l'application et, au lieu de saisir une valeur unique lorsqu'on lui demande le numéro de sécurité sociale, saisissez la chaîne «23425 ou 1 = 1», qui est transmise à la base de données comme suit:

SELECT nom_client, téléphone, adresse, date_de_ naissance WHERE no_sec_social = 23425 ou 1 = 1

La clause WHERE est importante car elle introduit une vulnérabilité. Dans une base de données, la condition 1 = 1 est toujours vraie, et comme la requête a été spécifiée pour renvoyer les détails du numéro de sécurité sociale du client (23425) ou WHERE 1 = 1, la requête renverra toutes les lignes de la table, ce qui n'était pas le intention originale.

L'exemple d'attaque par injection SQL ci-dessus est simple, mais il montre comment exploiter une vulnérabilité pour inciter l'application à exécuter une requête ou une commande de base de données backend.

Les attaques par injection SQL peuvent être atténuées en garantissant une conception d'application appropriée, en particulier dans les modules qui nécessitent l'entrée de l'utilisateur pour exécuter des requêtes ou des commandes de base de données. Dans l'exemple ci-dessus, l'application peut être modifiée de façon à n'accepter qu'une seule valeur numérique.