Bacho's Design - Your best online school - E learning Lebanon  (Liban)     
  Bachir Jean EL HAGE - E-Learning Math Lebanon (Liban)  


Attaque sur un site web: Injection de commandes SQL

Injection de commandes SQL

   Un site web basé sur des BDD passant ses données sous forme de requêtes SQL est fragile contre les attaques par injection SQL. Dans l’abscence d’un control sur les paramètres passés dans la requête SQL, un hacker peut modifier la requète, accéder à la BDD puis modifier son contenu ! Il devient administrateur pouvant exécuter la requète de son choix. En effet, il existe des caractères qui permettent d’ignorer la suite d’une requète ou d’enchainer plusieurs requètes SQL. Ignorer la suite d’une requète?
Explication :
Prenons la requète suivante :
mysql_query("SELECT * FROM TableUtilisateurs WHERE login = '$login' AND pass = '$password’");
Supposons maintenant que notre formulaire d’identification contienne les deux cases suivantes:
		login	:
		Pass	:
	
Eve est une pirate et elle est assez maline, elle introduit dans la case du login la chaine suivante :
		login	:
En quoi cela est-il très interaissant pour elle ?
En effet, de cette manière, Eve a réussi à modifier ma requète en la requète suivant :

mysql_query("SELECT * FROM TableUtilisateurs WHERE login = '' OR 1=1"); //' AND pass = '$password'");

En mettant les ‘//’ Eve a réussi à mettre le control du mot de passe en commentaire, et donc à le désactiver. Ne connaissant pas un login correct, elle a remplacé le control du login par une condition toujours vraie ‘1=1’. Eve peut maintenant voir toute les pages qui lui sont interdites!! De la mème manière Eve peut supprimer la table des utilisateurs : ' OR 1=1"); drop table TableUtilisateurs ;

	login	:
Elle peut aussi la modifier, désactiver le firewall, ...

Lutter contre les attaques par Injection SQL

La fonction mysql_real_escape_string() protège les caractères spéciaux d’une commande SQL, son sur chaque variable évite les injections SQL.
	$query = sprintf("SELECT * FROM TableUtilisateurs WHERE login='%s' AND pass='%s'",
			mysql_real_escape_string($login),
			mysql_real_escape_string($password));
	
  Il existe aussi des astuces permettant d’éviter ce genre d’attaques, citons quelques unes:
  • Interdire les entrées utilisateurs telles que ";", "insert", "select", "//", "--", " update ", ...
  • Limiter le nombre de caractères d’une entrée utilisateur.
  • Eviter l’utilisation d’un compte utilisateur ayant un grand pouvoir administratif.
  • Quand cela n’est pas vraiment nécessaire, éviter le stockage d’informations importantes dans des cookies.

Retour au début de la page.

Copyright ©2009 Bacho's Design by Bachir Jean EL HAGE


Vous devez vous connecter pour pouvoir commenter cet article. si vous etes enregistré Connectez-vous en haut de la page sous le menu principal, sinon l'inscription est gratuite: inscrivez-vous ici
Laissez votre commentaire
Loading...



Copyright ©2009 Bacho's Design by Bachir Jean EL HAGE

Bacho's design - Votre site Educatif en ligne par Bachir Jean EL HAGE

Statistiques du Site

Membres et messages

Nous avons 524 membres enregistrés.
Le dernier inscrit est mbaitibetfils3.
Nos membres ont posté 1108 messages.

Statistiques d'accès

  • 3122730 pages vues
  • En ce moment : 2 visiteurs connectés


did you like this website?



Bacho's Design web statistics for math education

Partenaires: (echange de lien? m'ecrire)

Recherchez Ici

  Annuaire généraliste

E-Learning Maths & Info - Liban par Bachir Jean EL HAGE Google   Google+     ISN Services Copyright 2008