Question

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:

<?php

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

?>

Après chaque connexion réussie i stocker l'$username et $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.

Toutes les idées? Merci

Était-ce utile?

La solution

Je suis un peu confus - vous utilisez les sessions PHP, ou les 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

Autres conseils

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

Edit: BTW, avez-vous stocker le mot de passe en texte brut ou crypté? Cela pourrait être un plus grand risque pour la sécurité.

La pratique courante est de donner à l'utilisateur un ID de session dans un cookie, vous-même ou en utilisant les sessions PHP. Stockage du hachage nom d'utilisateur et mot de passe dans un cookie est toujours fait par certains sites, mais je préfère l'ancien. Il vous permet de donner aux utilisateurs plus de contrôle sur leurs connexions, afin qu'ils puissent voir combien de sessions qu'ils ont et qui IP ils sont, 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 doit être différent pour chaque utilisateur. Dans le cas où votre base de données est volé ou exposé, ce qui rendra beaucoup plus difficile pour un attaquant d'obtenir les mots de passe (s'ils ont tous utilisé le même sel qu'ils pourraient générer des tables arc-en-pour que le sel, qui prend beaucoup de temps, mais laisserait les mots de passe alors briser assez rapidement). Pour plus de sécurité le sel devrait également contenir des caractères non alphanumériques, comme% $ & ^.

La réponse de Joel L'est bon. La seule chose que je voudrais ajouter est que, au lieu d'un ID aléatoire, vous pouvez ajouter des 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top