Les Cas types de cybersécurité(Injection SQL)

L’injection SQL est devenue un problème courant qui affecte les sites Web exploitant des bases de données. Elle se produit lorsqu’un malfaiteur exécute une requête SQL sur la base de données via les données entrantes du client au serveur. Des commandes SQL sont insérées dans la saisie du plan de données (par exemple, à la place du nom d’utilisateur ou du mot de passe) afin d’exécuter des commandes SQL prédéfinies. Un exploit d’injection SQL réussi peut lire les données sensibles de la base de données, modifier (insérer, mettre à jour ou supprimer) les données de la base de données, exécuter des opérations d’administration de la base de données (par exemple la fermer), récupérer le contenu d’un fichier spécifique, et, dans certains cas, envoyer des commandes au système d’exploitation.

Par exemple, le formulaire Web d’un site Web peut demander le nom de compte d’un utilisateur, puis l’envoyer à la base de données afin d’extraire les informations de compte associées à l’aide de SQL dynamique, comme ceci :

“SELECT * FROM users WHERE account = ‘“ + userProvidedAccountNumber +”’;”

Même si cela fonctionne pour les utilisateurs qui saisissent correctement leur numéro de compte, cela laisse un passage aux attaquants. Si, par exemple, quelqu’un décidait de fournir un numéro de compte “‘ or ‘1’ = ‘1’”, cela donnerait une chaîne de requête comme celle-ci :

“SELECT * FROM users WHERE account = ‘’ or ‘1’ = ‘1’;”

Puisque ‘1’ = ‘1’ est toujours évalué comme TRUE, la base de données renvoie les données de tous les utilisateurs au lieu d’un seul.

La vulnérabilité à ce type d’attaque informatique est liée au fait que SQL ne fait aucune distinction réelle entre le plan de contrôle et le plan de données. Pour cette raison, les injections SQL fonctionnent surtout si un site Web utilise SQL dynamique. De plus, les injections SQL sont très courantes avec les applications PHP et ASP en raison de la prévalence des anciennes interfaces fonctionnelles. Les applications J2EE et ASP.NET sont moins sensibles aux injections SQL en raison de la nature des interfaces programmatiques disponibles.

Afin de vous protéger contre les attaques par injection SQL, appliquez le modèle d’autorisation « least0privilege » à vos bases de données. Respectez les procédures stockées (assurez-vous que ces procédures n’incluent pas de SQL dynamique) et les instructions préparées (requêtes paramétrées). Le code exécuté sur la base de données doit être suffisamment fort pour prévenir les attaques par injection. Par ailleurs, validez les données saisies au niveau de l’application à l’aide d’une liste blanche.

- Commentaires

- Laisser un Commentaire