Votre avis sur mon systéme de session

Hormi -  
 Hormi -
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 603 Statut Membre 85
 
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
Hormi
 
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
Hormi
 
quelqu'un peut il m' aidé a sortir des script un peux plus sécurise ?
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
Hormi
 
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 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
Hormi
 
la jais pas tout compris de comment ca marche
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
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
Hormi
 
ok la tout est clair
0
Hormi
 
pour le reste c bon ou pas ?
0