2010-08-30 6 views
1

Je suis en train de resecuring mon inscription sur mon site Web et je veux demander si mon mot de passe est correct. Ou s'il y a une meilleure façon plus sûre je peux le faire. J'ai lu quelque part que le sel peut être écrit dans la base de données par utilisateur.Comment stocker en toute sécurité des informations d'enregistrement/de connexion comme un mot de passe?

Ceci est ma sécurité jusqu'à présent:

$salt = sha1(md5($activecode).$username); 

$username = mysql_real_escape_string($_POST['username']); 
$activecode = mysql_real_escape_string(time()); 
$pass1 = sha1(md5($_POST['pass1'].$salt)); 
$pass2 = sha1(md5($_POST['pass2'].$salt)); 
+1

Vous n'avez pas besoin d'appliquer 'mysql_real_escape_string' sur la valeur de retour de' time'; 'time' renvoie toujours une valeur entière. – Gumbo

Répondre

0

Cet extrait de code très a très peu de sécurité. Ainsi qu'avec le bon sens. Quelle est l'utilité de faire des hachages des deux mots de passe? Je suppose que vous devez comparer les mots de passe entrés et ensuite faire un hachage d'un seul.

MD5 est vraiment faux ici. Make it

mysql_real_escape tring est une fonction liée à la base de données, et non à la gestion des formulaires. Un bon endroit pour l'utiliser est juste avant d'ajouter des données dans la requête. Pour les chaînes entrant dans la requête entre guillemets.

Et ce que Joe a dit.

0

Peut-être que je manque quelque chose, mais comment voulez-vous jamais être en mesure de valider un mot de passe. Vous utilisez l'horodatage actuel pour un salt, ce qui signifie qu'au moment de vérifier le mot de passe, vous obtiendrez quelque chose de complètement différent. Ou vous vous enregistrez également le code d'activité à la base de données?

Si vous le faites, ça me semble bien.

1

vos exemples sont étranges. Je pense que la ligne 1 va après la ligne 4?

vous pouvez bien sûr sauvegarder une clé dynamique dans la base de données. mais si votre md5 est divulguée, elle s'en sortira probablement. donc cela ne ferait pas de bien contre les tables arc-en-ciel.

bien sûr, vous pourriez enregistrer une clé de sel à une base de données séparée ou quelque chose, mais je ne sais pas comment cela serait sensuel.

quoi que vous fassiez, gardez une seule clé dans votre application.

, mais les choses bien plus importantes sont par exemple pour * sécuriser votre connexion par https, * forcer vos utilisateurs à utiliser des mots de passe mots de passe * shuold changent tous lil en * logut après x secondes * fournir une déconnexion à distance ... des trucs comme ça

aussi je pense que le double hashing pourrait causer des problèmes. ne sais pas exactement pourquoi mais je ne vois pas beaucoup de sens dans ce ...

Questions connexes