• Accueil
  • Templates
    • E-commerce (6)
    • Joomla (52)
    • Musique (3)
    • Internet (10)
    • Divers (16)
    • Sport (2)
    • Communication (7)
    • Arttistique (13)
    • Designer (13)
    • XHTML/CSS (27)
    • Flash (19)
    • Entreprise (8)
    • Jeux (17)
    • WordPress (50)
    • Les plus télécharger (231)
    • Tous les Templates (244)
  • Scripts
  • Rechercher un script
  • Outils & Astuces
  • Tutoriels
    • Référencement
    • Installation de Joomla
    • Configuration de Joomla
  • Partenaire
  • A propos
  • Inscription
  • Contact
Rejoignez le groupe Facebook de Source Gratuit !! Suivez les Twits de Source Gratuit Abonnez vous au fil RSS



Pseudo
Password
Créer un compte
Mot de passe oublié !!

script gratuit

  • Tous les scripts
  • Les meilleurs scripts
  • Rechercher un script

  • Referncement
  • Instalation de Joomla
  • Telecharger Joomla 1.5

template gratuit

  • Template E-commerce (6)
  • Template Joomla (52)
  • Template Musique (3)
  • Template Internet (10)
  • Template Divers (16)
  • Template Sport (2)
  • Template Communication (7)
  • Template Arttistique (13)
  • Template Designer (13)
  • Template XHTML/CSS (27)
  • Template Flash (19)
  • Template Entreprise (8)
  • Template Jeux (17)
  • Template WordPress (50)
  • Les plus télécharger (231)
  • Autres Templates (244)

Partenaires

  • Casapress
  • Arabita
  • To Be Designer
  • location voiture maroc

Newsletter

E-mail

Protéger votre site contre les SQL INJECTION

Titre : Protéger votre site contre les SQL INJECTION
Article posté par : Administrateur
Date de mise en ligne : 2010-11-17
Vue : 1970 fois
Déscription :
Dans cet article on va traité les différents méthodes pour protéger un site web contre les failles de type sql injection.
Détail :

1- Types d’exploitation :

Si votre site web contient une variable qui permet d’afficher le contenu stocké dans une base de données MySQL, comme dans l’exemple suivant:

http://www.source-gratuit.com/page.php?id=1

Ou bien si votre site web contient un système d’authentification (Login / Mot de passe), dans ces deux cas vous êtes devant un menace d’être attaqué par injection SQL

Pour l’affronter il faut vérifier la valeur de cette variable et d’utiliser des méthodes de protection.

Généralement une attaque consiste à ajouter des commandes propres à la base de donnée à l’intérieur de la valeur (ce qu’on appel une « injection ») qui est utilisée de façon à transférer le fonctionnement de la commande SQL de sa tâche originale. Par exemple, une variable qui devrait contenir un simple chiffre qui identifie le numéro d’enregistrement dans la base de données pourrait contenir en plus une fonction additionnelle qui efface complètement la table.

2- Méthodes pour contrer ces exploits :

Dans le cas de notre premier exemple, on s’attend évidemment à ce que la valeur soit un chiffre sans plus, nous allons donc vérifier si c’est le cas (a travers une expression rationnelle), avant même de consulter la base de donnée MySQL avec une opération SELECT:

$id = $_GET["id"]; if ((!$id) || (!ereg("^[0-9]+$", $id))) exit("Vous n’avez aucune page a cette adresse");

Si la valeur n’existe pas, ou si la valeur ne correspond pas à un chiffre, au début et à la fin (indiqué par les symboles ^ et $), on sort du programme pour afficher un message d’erreur.

On peut ensuite utiliser la variable en toute sécurité dans notre requête mysql:

$query = "SELECT * FROM Table WHERE ID = " . $id;

Un autre exemple, cette fois, avec un paramètre littéral en majuscule:

http://www.source-gratuit.com/page.php?id=ABC

Donc:

$id = $_GET["id"]; if ((!$id) || (!ereg("^[A-Z]+$", $id))) exit("Vous n’avez aucune page a cette adresse");

Si la valeur ne correspond pas à un mot tout en majuscule, sans espace ou autre caractère non permis, on sort du programme et on affiche toujours un message d’erreur.

Dans les cas où on accepte des valeurs inscrites a travers un formulaire comme dans l’authentification  (login / mot de passe), toutefois on devrait au moins se protéger contre l’emploi des caractères propres à MySQL qui sont souvent utilisés dans le cas d’attaque par injection, comme NULL, \x1a, \n, \r, \, ‘,  » et \x00.

Dans ce cas, on recommande l’utilisation de la fonction PHP mysql_real_escape_string() sur ces variables avant des les utiliser dans une requête auprès de la base de donnée.

Exemple:

$id = mysql_real_escape_string($_POST["id"]); $query = "SELECT * FROM Table WHERE id_champ = '" .$id. "'";

Cette fonction  échappe les caractères conflictuels avec une barre d’échappement \ afin de considérer leur valeur littérale plutôt que leur valeur comme caractère d’opération MySQL. Cette commande doit par contre être appelée après qu’une connexion MySQL ait été établie.

Il faut aussi s’assurer que PHP ne fonctionne pas en mode « Register Globals » ,et que la valeur des variables soient toujours acquise selon le procédé prévu, comme suit:

Pour les formulaires :

$variable = $_POST["variable"];

Pour les liens href :

$variable = $_GET["variable"];

Partager cette astuce :
Envoyer la discussion sur Facebook Envoyer la discussion sur Twitter Envoyer la discussion sur Google Envoyer la discussion sur StumbleUpon Envoyer la discussion sur Digg Envoyer la discussion sur del.icio.us

News

template gratuit - Herbal OpenCart Theme

Sponsors Web



tag

template gratuit template free template script gratuit les jscriptes telecharger logiciel logiciel gratuit Astuces truces script php script javascript Ajax les logicieles les templates les astuces les truces free script telecharger gratuitment kit grapgique gratuit outiles jeux bureautique developpement internet multimedia jeux utilitaires


Boostersite
Site dynamiques et php
kit graphique
Référencé dans l'Annuaire Mirti
suivi positionnement Topliste dur.fr Achats et Shopping sur annuaire francophone NEToo
Annuaire Gratuit

© 2010 Source Gratuit, Tous droits réservés. Designed by Guivara

Free counter and web stats