2012-07-30 3 views
0

J'utilise un système de cookies de base pour la partie « Se souvenir de moi » d'un journal sous forme. Voici le code:sécurité Cookie php

if(isset($_POST['submit'])) 
{ 
$username = $_POST['username']; 
$password = $_POST['password']; 

    if($username&&$password) 
    { 
     $connect = mysql_connect('localhost','root',''); 
     mysql_select_db('phplogin'); 
     $query = mysql_query("SELECT * FROM utilisateurs WHERE NomUtilisateur='$username' AND MotDePasse='$password'"); 

     $rows = mysql_num_rows($query); 
     if($rows==1) 
     { 
      if($_POST['checkbox']) 
      { 
       setcookie('username',$username,time()+3600); 
       header('Location: membre.php');  

      }else{$_SESSION['username']=$username;header('Location:membre.php');} 
     }else echo "Something something error"; 
    }else echo "Something something darkside"; 
} 

Je ne suis pas sûr si je quitte besoin d'obtenir le cookie et si oui, comment le faire? Tout ce que je veux vraiment faire est de ne pas permettre aux gens de se connecter à un autre compte utilisateur avec un faux cookie ou de mettre des informations sensibles en clair dans le cookie.

+4

En ce moment, tout le monde peut créer un cookie pour se connecter en tant qu'utilisateur tant qu'il connaît son nom d'utilisateur. En plus de cela, stocker un mot de passe en clair dans votre base de données est un ** énorme non-go **! – ThiefMaster

+0

Eh bien, ce n'est pas bon du tout =/ –

+0

Je ne l'ai pas encore ajouter toute la partie de la crypte sur mon code. Tout est encore dans un serveur local, donc pas de problème. –

Répondre

1

Actuellement tout le monde peut se connecter s'il connaît le nom d'utilisateur d'un utilisateur. Même si un cookie est défini, vous devez avoir un processus pour identifier les utilisateurs qu'ils sont de véritables clients. Par exemple, lorsqu'un utilisateur se connecte, vous pouvez enregistrer une chaîne alphanumérique aléatoire enregistrée dans les cookies et votre base de données contre cet utilisateur, et la prochaine fois que vous vérifiez la chaîne avec la valeur dans votre base de données et n'oubliez pas de changer la chaîne alphanumérique tous les X jours, cela empêche les attaquants de copier les cookies de quelqu'un et de les utiliser pour se connecter. Quelque chose comme ça ne

$uniquekey  = 'A234W'; 
$randomstring = sha1(strval(rand(0,microtime(true))+ $uniquekey + strval(microtime(true)))); 
setcookie('loginID', $randomstring, time()+60*60*24*7,'/', 'www.yoursite.com', false, true); 

et lors de la lecture de l'utilisation des cookies mysql_real_escape_string pour filtrer tout code malveillant

+0

Avec ce code, seule la partie 'microtime (true)' est en fait l'entrée de hachage puisque vous utilisez l'addition arithmétique. – Gumbo

+0

@Gumbo $ uniquekey sera différent pour tous les utilisateurs – Sibu

+0

Cela n'a pas d'importance. Avec l'addition arithmétique, «A234W» donne «0». – Gumbo