Comment Ca Marche - Communauté informatique  
   
Accueil - Encyclopédie informatiqueTélécharger l'encyclopédieContribuer à cet article

Attaques - Injection de commandes SQL

Injection de commandes SQL Encyclopédie


Injection de commandes SQL

Les attaques par injection de commandes SQL sont des attaques visant les sites web s'appuyant sur des bases de données relationnelles.

Dans ce type de sites, des paramètres sont passés à la base de données sous forme d'une requête SQL. Ainsi, si le concepteur n'effectue aucun contrôle sur les paramètres passés dans la requête SQL, il est possible à un pirate de modifier la requête afin d'accéder à l'ensemble de la base de données, voire à en modifier le contenu.

En effet, certains caractères permettent d'enchaîner plusieurs requêtes SQL ou bien ignorer la suite de la requête. Ainsi, en insérant ce type de caractères dans la requête, un pirate peut potentiellement exécuter la requête de son choix.

Soit la requête suivante, attendant comme paramètre un nom d'utilisateur :

SELECT * FROM utilisateurs WHERE nom="$nom";

Il suffit à un pirate de saisir un nom tel que « toto" OR 1=1 OR nom ="titi » pour que la requête devienne la suivante :

SELECT * FROM utilisateurs WHERE nom="toto" OR 1=1 OR nom ="titi";

Ainsi, avec la requête ci-dessus, la clause WHERE est toujours réalisée, ce qui signifie qu'il retournera les enregistrements correspondant à tous les utilisateurs.

Procédures stockées

De plus, certains systèmes de gestion de bases de données tel que Microsoft SQL Server possèdent des procédures stockées permettant de lancer des commandes d'administration. Ces procédures stockées sont potentiellement dangereuses dans la mesure où elles peuvent permettre à un utilisateur malintentionné d'exécuter des commandes du système, pouvant conduire à une éventuelle intrusion.

Parades

Un certain nombre de règles permettent de se prémunir des attaques par injection de commandes SQL :

  • Vérifier le format des données saisies et notamment la présence de caractères spéciaux ;
  • Ne pas afficher de messages d'erreur explicites affichant la requête ou une partie de la requête SQL.
  • Supprimer les comptes utilisateurs non utilisées, notamment les comptes par défaut ;
  • Eviter les comptes sans mot de passe ;
  • Restreindre au minimum les privilèges des comptes utilisés ;
  • Supprimer les procédures stockées ;

Discussions pertinentes trouvées dans le forum

25/01 13h33 presse injection caractéristiques [presse à injection] Caractéristiques Etudes/Formation 29/01 12h06->Séb084
21/02 19h49 programme inconnu injection code programme inconnu : injection de code Virus/Sécurité 21/02 20h37->the drum master1
12/08 10h30 injection ie v5 injection dans IE v5 Réseaux 12/08 10h30->Pascal0
12/08 13h27 injection code ie v5 injection de code dans IE v5 Windows 12/08 13h27->Pascal0
23/11 14h41 sql calculer total [SQL] comment calculer un total ? Développement 25/11 18h58->Riwalenn24
17/12 14h24 compter points tableau php sql Compter les points dans un tableau en PHP/SQL Webmastering 21/12 16h48->sweetmemories16
30/10 13h34 sql server import export donnees [MS SQL Server] import /export de donnees Windows 31/10 14h57->sebsauvage14
04/07 16h47 requete sql aide requete SQL Développement 05/07 15h26->antic8013
01/09 21h49 php requette sql [PHP] problème de requette SQL Webmastering 02/09 16h07->boss021112
01/09 16h50 nb enregistrement sql Nb d'enregistrement sql Développement 02/09 01h16->kinder.surprise10
Discussion fermée Problème résolu Injection SQL Plus de discussions sur « Injection SQL »

Ce document intitulé « Attaques - Injection de commandes SQL » issu de l'encyclopédie informatique Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.