Comment Ca Marche l'informatique ?
 
 Comment Ça Marche - Articles - Attaques - Injection de commandes SQL
 Accueil
 Forums
 Astuces
 Guide d'achat
 
   
 
 
Livres Comment ça marche?
Tout sur le hardware PC
Tout sur la sécurité
Tout sur le webmastering
Présentation des trois premiers ouvrages de la collection CommentCaMarche.net
Page d'accueil
Ajouter aux favoris
Contribuer à cet article
Ecrire à Jean-Francois Pillou
Attaques distantes
Introduction
Les pirates
Typologie de pirates
Méthodologie
Exploits
Attaques cryptographiques
Mots de passe
Man in the middle
Rejeu
Dénis de service
Déni de service
Attaque par réflexion
Attaque Ping de la mort
Attaque par fragmentation
Attaque Land
Attaque SYN
Techniques
Usurpation d'adresse IP
Vol de session (hijacking)
ARP poisoning
Ecoute réseau
Balayage de ports
Débordement de tampon
Spam
Mail-bombing
Vulnérabilités du web
Attaques web
Falsification de la saisie
Manipulation d'URL
Cross-Site Scripting
Injection SQL
Arnaques
Ingénierie sociale
Scam
Phishing
Loteries
Version 2.0.6
 
Injection de commandes SQL Page précédente Page suivante Retour à la page d'accueil

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 ;


Page précédente Page suivante


  Ce document intitulé « Attaques - Injection de commandes SQL » issu de Comment Ça Marche 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.