2010-01-02 6 views
0

stocke nom d'utilisateur & mot de passe de l'utilisateur dans un cookie une bonne pratique? Je veux vraiment savoir comment les grands sites comme (Facebook, digg, twitter) gérer cela. Mon code est comme ça:Connexion Membre sécurisé en utilisant des cookies

<?php 

$username = mysql_real_escape_string($_POST['username']); 
$password = md5($_POST['password']); 

?> 

Après chaque connexion réussie i stocker le $username et le $password (md5) dans un cookie. Et régénérer l'identifiant de session avec session_regenerate_id()


Et pour authentifier l'utilisateur i vérifier si une session de connexion existe, sinon j'authentifie les cookies.

Des idées? Merci

Répondre

2

Je suis un peu confus - utilisez-vous des sessions PHP ou des cookies?

Si vous stockez les données dans une session ($_SESSION['username'] = 'Tom' etc.), que les données ne sont pas stockées dans le cookie de l'utilisateur.

Si vous stockez les données dans un cookie séparé (pour quelque chose comme la connexion automatique), vous pouvez stocker un autre, ID aléatoire au lieu et rechercher l'ID utilisateur une table de base de données.

autologins 
---------- 
key (random hash) 
user_id 
expires 
+0

J'authentifie le cookie, puis définissez une session. Si une session est déjà définie, je l'utilise directement. Votre idée d'autologins est bonne. Merci. – MoeAmine

0

Juste un md5 ne suffit pas, vous devez inclure au moins un « sel » aléatoire (une petite chaîne de caractères aléatoires) que vous stockez dans votre base de données.

Modifier: Btw, avez-vous enregistré le mot de passe en texte brut ou crypté? Cela pourrait être un risque de sécurité plus important.

+0

Très bien, j'ai une idée sur le salage .. mais est-il assez sûr pour le stocker dans le cookie? – MoeAmine

+0

Stocké uniquement dans MD5. mais je vais changer cette stratégie. – MoeAmine

0

La pratique standard consiste à donner à l'utilisateur un ID de session dans un cookie, soit vous-même, soit en utilisant des sessions PHP. Le stockage du nom d'utilisateur et du mot de passe dans un cookie est toujours effectué par certains sites, mais je préfère le premier. Cela vous permet de donner aux utilisateurs plus de contrôle sur leurs connexions, de sorte qu'ils peuvent voir combien de sessions ils ont et de quelle IP ils proviennent, par exemple - voir GMail pour un bon exemple.

Sur le sujet de sels et de hachage, vous devez stocker les hashs dans la base de données Salted. Idéalement, le sel devrait être différent pour chaque utilisateur. Dans le cas où votre base de données est volée ou exposée, cela rendra beaucoup plus difficile pour un attaquant d'obtenir des mots de passe (s'ils utilisaient tous le même sel, ils pourraient générer des tables arc-en-ciel pour ce sel, mais les casse ensuite les mots de passe assez rapidement). Pour des raisons de sécurité, le sel doit également contenir des caractères non alphanumériques, tels que% $ & ^.

+0

Je n'ai pas d'expérience dans le traitement de sesion ID dans les cookies, mais le projet sur lequel je travaille ne nécessite pas de donner à l'utilisateur son ip, ses sessions, etc. comme vous l'avez dit. Merci pour l'explication de la stratégie de salage. – MoeAmine

0

La réponse de Joel L est bonne. La seule chose que j'ajouterais c'est qu'au lieu d'un ID aléatoire, vous pourriez ajouter quelques informations supplémentaires identifiant l'utilisateur pour le rendre plus sûr.

Par exemple, utiliser un hachage de l'adresse IP de l'utilisateur et un sel, offre une sécurité supplémentaire contre le vol ou quelqu'un renifler le cookie de sécurité de l'utilisateur.

Je soupçonne que TWITTER utilise quelque chose comme ça, ce qui est la raison pour laquelle vous ne pouvez être en permanence connecté à Twitter à partir d'un ordinateur à la fois.

Questions connexes