Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1030 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Securite formulaire + base de donnee

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Securite formulaire + base de donnee

n°1511362
drexlbob
Posté le 06-02-2007 à 13:40:28  profilanswer
 

Bonjour.
Je suis debutant en Php et mysql et je ne connais pas bien la securite. j'ai donc un code a vous presenter (a mon avis pas du tout securise). Qu'est ce que vous pouvais me conseiller de faire afin de securiser aux maximum les infos dans la base de donnee???Si vous avez des sugestions d'optimisation j eprend aussi. En fait tous ce que vous voyez de defaillants je suis preneurs
(et pas de foutage de gueule ! lol)  
Voici le code :
 
<?php
 
function insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass, $date)
{
 
  $fill_db = "INSERT INTO user (nom, prenom, login, adresse, cp, ville, email, pass, repass, date) VALUES (\"$nom\", \"$prenom\",\"$login\", \"$adresse\", \"$cp\",\"$ville\",\"$email\", \"$pass\", \"$repass\", \"$date\" )";
 
 $result = mysql_query($fill_db);
    echo "Inscription reussite !";
    if (!$result)
    die('Requete invalide : ' . mysql_error());
 
       
}
 
 
  function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass, $date)
{
  $aroba = strpos($email, '@');
  $dot = strpos($email, '.');
  $retval = FALSE;
 
  if(empty($nom))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre nom <br />";
    }
  if(empty($prenom))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre prenom<br />";
    }
  if(empty($login))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre login<br / >";
    }
  if(empty($adresse))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre adresse<br /";
    }
  if(empty($cp))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre code postal<br />";
    }
  if(empty($ville))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre ville<br />";
    }
  if (empty($email))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre email<br />";
    }
  elseif(!empty($email) && $aroba == '' || $dot == '')
    {
      $retval = FALSE;
      echo "Mail invalide<br />";
    }
  if(empty($pass) || empty($repass))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre pass<br />";
    }
  elseif (!empty($pass) && !empty($repass) && $pass != $repass)
    {
      $retval = FALSE;
      echo "Verifier vos champs de mots de passe (les deux mot de passe saisit doivent etre identiques)<br /> ";
    }
  else
    $retval = TRUE;
  if ($retval == TRUE)
      insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass , $date);
  if ($retval == FALSE && file_exists("index.php" ))
    include("index.php" );
}
 
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$login=$_POST['login'];
$adresse=$_POST['adresse'];
$cp=$_POST['cp'];
$ville=$_POST['ville'];
$email=$_POST['email'];
$pass=$_POST['pass'];
$repass=$_POST['repass'];
$date = date("d/m/Y H:i:s " );
 
 
   $link = mysql_connect("l*******", "***", "**********" );
   if (!$link)  
     die('Impossible de se connecter : ' . mysql_error());
   else
     echo "Connexion reussie!!<br />";
 
$create_db = 'CREATE DATABASE `site`';
mysql_query($create_db);
 
 
  $db_selected = mysql_select_db('site', $link);
if (!$db_selected)
   die ('Impossible de selectionner la base de donnees : ' . mysql_error());
   else
     echo "Database selectionnee<br /> ";
 
 $table = 'CREATE TABLE `user` ('
        . ' `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, '
        . ' `nom` VARCHAR(25) NOT NULL, '
        . ' `prenom` VARCHAR(25) NOT NULL, '
        . ' `login` VARCHAR(25) NOT NULL, '
        . ' `adresse` VARCHAR(255) NOT NULL, '
        . ' `cp` INT(5) NOT NULL, '
        . ' `ville` VARCHAR(25) NOT NULL, '
        . ' `email` VARCHAR(30) NOT NULL, '
        . ' `pass` VARCHAR(15) NOT NULL, '
        . ' `repass` VARCHAR(15) NOT NULL,'
        . ' `date` VARCHAR(20) NOT NULL '
        . ' )'
        . ' TYPE = myisam;';
 
 
mysql_query($table, $link);
check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass, $date);
mysql_close($link);
 
?>
 
 
 
 


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
mood
Publicité
Posté le 06-02-2007 à 13:40:28  profilanswer
 

n°1511365
dwogsi
Défaillance cérébrale...
Posté le 06-02-2007 à 13:48:32  profilanswer
 

Injection SQL


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1511379
sircam
I Like Trains
Posté le 06-02-2007 à 14:13:14  profilanswer
 

Balise code please...
 
Design : tu crées la table et/ou la DB dans le code chargé d'insérer un utilisateur ?!?

n°1511406
drexlbob
Posté le 06-02-2007 à 15:17:43  profilanswer
 


 
Pr l'injexction sql jai donc securisee la requete:
 
$fill_db = "INSERT INTO user (nom, prenom, login, adresse, cp, ville, email, pass, repass, date) VALUES (\"$nom\", \"$prenom\",\"$login\", \"$adresse\", \"$cp\",\"$ville\",\"$email\", \"$pass\", \"$repass\", \"$date\" )";  
 
comme cela :
 
 $fill_db = sprintf("INSERT INTO user (`nom`, `prenom`, `login`, `adresse`, `cp`, `ville`, `email`, `pass`, `repass`, `date`) VALUES ('%s', '%s','%s','%s','%d', '%s', '%s','%s','%s', '%s')", mysql_real_escape_string($nom, $link),
       mysql_real_escape_string($prenom, $link),
       mysql_real_escape_string($login, $link),
       mysql_real_escape_string($adresse, $link),
       $cp,
       mysql_real_escape_string($ville, $link),
       mysql_real_escape_string($email, $link),
       mysql_real_escape_string($pass, $link),
       mysql_real_escape_string($repass, $link),
       $date);
 
 
est ce que c'est correct??
 
y-a-t-il dotre faille sql??
Si oui peut-tu m'indiquer a quel endroit
Merci de ton aide.


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
n°1511413
drexlbob
Posté le 06-02-2007 à 15:28:40  profilanswer
 

sircam a écrit :

Balise code please...
 
Design : tu crées la table et/ou la DB dans le code chargé d'insérer un utilisateur ?!?


en fait tu veux que je face un fintion qui se connecte a la base une qui cree une table ainsi de suite... c'est ca??


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
n°1511424
drexlbob
Posté le 06-02-2007 à 15:37:20  profilanswer
 

Comment securiser les mots de passe des utilisateurs?? Parce que dans ma base il sont enregistres en clair


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
n°1511426
dwogsi
Défaillance cérébrale...
Posté le 06-02-2007 à 15:44:36  profilanswer
 

en utilisant md5(), sha1() et fonction similaire. Ou directement celles disponibles dans mysql. Avec un peu de recherche sur google ça devrait aller.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
n°1511436
drexlbob
Posté le 06-02-2007 à 15:53:24  profilanswer
 

dwogsi a écrit :

en utilisant md5(), sha1() et fonction similaire. Ou directement celles disponibles dans mysql. Avec un peu de recherche sur google ça devrait aller.


J'ai donc utiliser md5... est-ce normal de voir les motr de passe en clair dans la base et non pas avec les signature md5 a la place???


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
n°1511448
omega2
Posté le 06-02-2007 à 16:04:20  profilanswer
 

drexlbob a écrit :

en fait tu veux que je face un fintion qui se connecte a la base une qui cree une table ainsi de suite... c'est ca??


En fait, l'idéal, ca serait surtout d'avoir un script d'installation qui crait la base et les tables, et d'avoir la création des utilisateurs dans un autre script.  
 
A l'opposé, il est abbérant d'essayer de recréer la table à chaque fois que quelqu'un s'inscrit (ca fait bosser la base pour rien. Si la table est recréé, tu perds tous tes inscrits et si elle n'est pas recré, la base va te gueuler dessus.

n°1511467
drexlbob
Posté le 06-02-2007 à 16:16:02  profilanswer
 

omega2 a écrit :

En fait, l'idéal, ca serait surtout d'avoir un script d'installation qui crait la base et les tables, et d'avoir la création des utilisateurs dans un autre script.  
 
A l'opposé, il est abbérant d'essayer de recréer la table à chaque fois que quelqu'un s'inscrit (ca fait bosser la base pour rien. Si la table est recréé, tu perds tous tes inscrits et si elle n'est pas recré, la base va te gueuler dessus.


OK, tres interessant. Merci


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
mood
Publicité
Posté le 06-02-2007 à 16:16:02  profilanswer
 

n°1511479
drexlbob
Posté le 06-02-2007 à 16:22:09  profilanswer
 

drexlbob a écrit :

en fait tu veux que je face un fintion qui se connecte a la base une qui cree une table ainsi de suite... c'est ca??


Jai un autre gros probleme avec ma fonction check_formu
 
Mon probleme:
Le meme que tout a l'heure. (si les champs ne sont pas rempli l'enregistrement se fait quand meme). Pourtant je ne vois pas de pb das les valeur de retour. Bref je vais surement vous embeter avec ce code mais ca serai vraiment cool de me dire pourquoi ca ne marche plus. Merci
 
 
Mes fonctions :
 
function insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass, $date, $link)
{
   
  $fill_db = sprintf("INSERT INTO user (`nom`, `prenom`, `login`, `adresse`, `cp`, `ville`, `email`, `pass`, `repass`, `date`) VALUES ('%s', '%s','%s','%s','%d', '%s', '%s','%s','%s', '%s')", mysql_real_escape_string($nom, $link),
       mysql_real_escape_string($prenom, $link),
       mysql_real_escape_string($login, $link),
       mysql_real_escape_string($adresse, $link),
       $cp,
       mysql_real_escape_string($ville, $link),
       mysql_real_escape_string($email, $link),
       mysql_real_escape_string($pass, $link),
       mysql_real_escape_string($repass, $link),
       $date);
   
  $result = mysql_query($fill_db, $link);
  echo "Inscription reussite !";
  if (!$result)
    die('Requete invalide : ' . mysql_error());
       
}
 
function check_form($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass, $date, $link)
{
  $aroba = strpos($email, '@');
  $dot = strpos($email, '.');
  $retval = FALSE;
 
  if(empty($nom))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre nom <br />";
    }
  if(empty($prenom))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre prenom<br />";
    }
  if(empty($login))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre login<br / >";
    }
  if(empty($adresse))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre adresse<br /";
    }
  if(empty($cp))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre code postal<br />";
    }
      elseif(isset($cp) && !is_numeric($cp))
    {
      $retval = FALSE;
      echo "Code postal incorrect<br />";
    }
  if(empty($ville))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre ville<br />";
    }
  if (empty($email))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre email<br />";
    }
  elseif((isset($email)) && $aroba == '' && $dot == '')
    {
      $retval = FALSE;
      echo "Mail invalide<br />";
    }
  if(empty($pass) || empty($repass))
    {
      $retval = FALSE;
      echo "Vous avez oublie de saisir votre pass<br />";
    }
  if (!empty($pass) && !empty($repass) && $pass != $repass)
    {
      $retval = FALSE;
      echo "Verifier vos champs de mots de passe (les deux mot de passe saisit doivent etre identiques)<br /> ";
    }
  else
    $retval = TRUE;
  if ($retval == TRUE)
    insert_in_db($nom, $prenom, $login, $adresse, $cp, $ville, $email, $pass, $repass , $date, $link);
  if ($retval == FALSE && file_exists("index.php" ))
    include("index.php" );
}
 
 
function connect_db($host, $user, $password)
{
   $link = mysql_connect("localhost", "root", "RXb6L9xd" );
   if (!$link)  
     die('Impossible de se connecter : ' . mysql_error());
   else
     echo "Connexion reussie!!<br />";
}


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!
n°1511492
drexlbob
Posté le 06-02-2007 à 16:56:41  profilanswer
 

en faitr c'est bon c'est mmais conditions qui deconnais


---------------
L'etre humain juge tres vite comprend lentement, s'enerve facilement et perd vite ses facultees d'enfant!!!!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Securite formulaire + base de donnee

 

Sujets relatifs
liste déroulante formulaire principal sous-formulaireASP, mcms, PHP et MySQL se comprennent-ils?
Mise à jour schéma base de données Sql server 2005[PHP] pb controle de formulaire
[word] incompatibilité macro et formulaire[PHP] FPDF : Comment activer la compression ?
pb recherche de slash dans base sql[ PHP ] fonctions mail en local
pb avec formulaire dynamique en HTML/Java 
Plus de sujets relatifs à : [PHP] Securite formulaire + base de donnee


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR