Votre avis sur mon systéme de session

Fermé
Hormi - 16 oct. 2009 à 14:12
 Hormi - 16 oct. 2009 à 18:48
Bonjour,

Je vais maitre un petit système de session sur mon site et j'aimerais avoir votre avis sur le le code concernent l'efficacité et aussi la sécurité.

index.php

<html>
<body>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
if (isset($_COOKIE['supercookie2']))
{
$login= mysql_real_escape_string(htmlspecialchars($_COOKIE['supercookie2']));
$reponse = mysql_query("SELECT * FROM t_compt_2 WHERE login='$login'");
$donnees = mysql_fetch_array($reponse);
if ($donnees['statut'] == '1'){
echo '<a>Bonjour </a>';
echo $donnees['pesdo'];
echo '</br><a href ="deco.php">Déconnection</a>';}
else{

echo '<a>Bonjour, vous n\'ete pas connecter ! </a><br/><br/>';
echo '</br><a href ="login.php">Connection</a>';}
}
else{
echo '<a>Bonjour, vous n\'ete pas connecter ! </a><br/><br/>';
echo '</br><a href ="login.php">Connection</a>';
}
?>
</body>
</html>

login.php

<html>
<head>
</head>
<body>
<FORM method="POST" action="actionlog.php">

<P>Login<br>
<input type="text" name="login" value="" size="100" id="login"/>
<br>
</p>
<P>Mot de passe<br>
<input type="password" name="mdp" value="" size="100" MAXLENGTH="8" id="mdp"/>
</p>
<INPUT type="submit" value="Envoyer"/>
</FORM>
</TH>
</body>
</html>

actionlog.php

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
$login= mysql_real_escape_string(htmlspecialchars($_POST['login']));
$reponse = mysql_query("SELECT * FROM t_compt_2 WHERE login='$login'");
$donnees = mysql_fetch_array($reponse);
if ($donnees['login'] == $login)
{
echo 'Login OK !<br/><br/> ';
$mdp= mysql_real_escape_string(htmlspecialchars($_POST['mdp']));
if ($donnees['mdp'] == $mdp)
{
echo 'Mot de passe OK !';
mysql_query("UPDATE t_compt_2 set statut='1' WHERE login='$login'");
setCookie("supercookie1",$donnees['pesdo']);
setCookie("supercookie2",$donnees['login']);
header("Refresh: 1; URL=./index.php");
}
else{
echo 'Mot de passe erroné !';
}
}
else
{
echo 'Login ou mot de passe erroné !';
}
?>

deco.php

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("compt3");
$login= mysql_real_escape_string(htmlspecialchars($_COOKIE['supercookie2']));
mysql_query("UPDATE t_compt_2 set statut='0' WHERE login='$login'");
echo '<a>Vous avez été déconnecté !</a>';
header("Refresh: 1; URL=./index.php");
?>

10 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
16 oct. 2009 à 15:49
Ta connexion par cookie est foireuse, en l'état, n'importe qui peut se connecter sur n'importe quel compte.

Pour ta connexion par form, tu ne dois pas indiquer si le login est ok si le mot de passe est faux.
Un mot de passe, ça se hashe, on ne le stocke jamais en clair dans une bdd.

Pourquoi tu utilises htmlspecialchars avant de passer tes variabls dans tes requetes ?
htmlspecialchars ne sert qu'à l'affichage.

C'est quoi la différence entre login et pesdo ?
Pas bien saisi.

Il sert à quoi le second cookie ?
0
bonjour

il y a 2 cookie 1 pour le login et un autre pou le mots de passe

Pour moi un login est un identifien comme un numero de serrie

pseudo = hormi
login = 1524moerfger121
mdp = 13651fve321321
0
quelqu'un peut il m' aidé a sortir des script un peux plus sécurise ?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
16 oct. 2009 à 17:27
Même la connexion est foireuse.
Je n'ai pas testé mais essayes avec un espace ou même rien du tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
se système marche chez moi, je voudrais juste un cout de main pour faire mieux et que l'on m'explique les erreurs
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
16 oct. 2009 à 17:49
Pour la connexion, voici comment tu pourrais faire:
<?php
$login = trim(addslashes($_POST['login']));
$password = md5(trim(addslashes($_POST['password'])));

$sql = 'SELECT id,password FROM membres WHERE login = "'.$login.'"';
$req = mysql_query($sql);
$nb = @mysql_num_rows($req);
if($nb > 0) {
  $membre = mysql_fetch_assoc($req);
  if($password === $membre['password']) {
    echo 'ok';
    // ...
  } else {
    echo 'Mauvais password';
  }
} else {
  echo 'Login inexistant.';
}
?>
0
la jais pas tout compris de comment ca marche
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
16 oct. 2009 à 18:00
Voilà avec des commentaires :
<?php
// On retirer les espaces au debut et en fin de chaine et on applique déjà addslashes
$login = trim(addslashes($_POST['login']));
$password = md5(trim(addslashes($_POST['password'])));

// SQL : Selectionner l'id (pour le stocker en session après) et 
// le mot de passe (hashé en md5, pour le comparer par arpès)
$sql = 'SELECT id,password FROM membres WHERE login = "'.$login.'"';
$req = mysql_query($sql);

// On compte le nombre d'entrée dont le login est $login (cf. la requête). 
// Le "@" permet de ne pas afficher d'erreur si il n'y a pas d'erreur.
$nb = @mysql_num_rows($req);
if($nb > 0) {
  $membre = mysql_fetch_assoc($req);
  if($password === $membre['password']) {
    echo 'ok';
    // ...
  } else {
    echo 'Mauvais password';
  }
} else {
  echo 'Login inexistant.';
}
?>
0
ok la tout est clair
0
pour le reste c bon ou pas ?
0