2010-12-02 44 views
2

Je développe un service Web où les utilisateurs doivent se connecter. Je vais stocker les données utilisateur dans une base de données SQL et entrer/sortir via PHP. Mais je ne veux pas le stocker ouvertement. Comment puis-je chiffrer les mots de passe en PHP afin que seuls ceux qui connaissent le mot de passe peuvent le déverrouiller?Stockage de mot de passe sécurisé

Je sais que des services comme phpBB utilisent une sorte de dissimulation/cryptage sur les mots de passe stockés.

Répondre

3

La façon la plus simple de sécuriser votre système de stockage de mot de passe est de en utilisant un bibliothèque standard. Parce que la sécurité a tendance à être beaucoup plus compliquée et avec des possibilités d'invisibilité plus invisibles que la plupart des programmeurs ne peuvent résoudre seuls, l'utilisation d'une bibliothèque standard est presque toujours la plus facile et la plus sûre.

Voir this answer pour plus d'infos

+0

Merci! Votre exemple semble être prêt à l'emploi. Juste ce dont j'ai besoin maintenant. Ce sera amusant d'y aller plus tard. – Espen

0

Vous voulez probablement hacher le mot de passe - ne pas le chiffrer. Check out SHA-1. Le hachage signifie que vous ne pouvez pas récupérer les données d'origine comme vous le pouvez avec le cryptage. Au lieu de cela, vous devez hacher les utilisateurs et les comparer au hash de la base de données pour voir s'ils ont le bon mot de passe. Cela augmente la sécurité comme si votre base de données était compromise - un tas de hachages sont inutiles.

+0

le fait SHA1 http://www.phocean.net/2009/05/10/sha-1-vulnerable-consider-sha-2.html –

5

Vous devez selecter et hacher le mot de passe, en utilisant un algorithme sécurisé.

+0

Je pense que vous voulez dire la bibliothèque mhash. – rook

+0

@Rook, oui, désolé. Tard dans la nuit :) –

0

Enregistrer un hachage MD5 et pour le rendre plus sûr, ajouter un sel.

+2

MD5 n'est plus suggéré car des vulnérabilités ont été trouvées, d'où ma suggestion SHA1 –

+2

c'est encore un hachage valide pour les scripts de la communauté etc, l'utiliser avec un sel est aussi bon que n'importe quel hash – Breezer

+1

incorrect. Utilisez sha256 ou supérieur s'il vous plaît. http://www.md5decrypter.com/ – DampeS8N

-1

Il y a la possibilité de hachage des mots de passe (de préférence avec un sel):

$salt = random_string($length = 5); 
$hash = $salt . sha1($salt . $password); 

Ou magasin crypté (uniquement si votre connexion MySQL est sécurisé SSL):

INSERT INTO `user` (`user`,`pass`) VALUES("username",ENCRYPT("password","secretkey")) 
+1

SSL ne concerne que les données en transit donc je ne comprends pas très bien votre dernier commentaire –

+1

en utilisant le cryptage de MySQL devrait être évité pour de nombreuses raisons. Le plus grand étant que ce n'est PAS un moyen. Donc, il peut être décodé si on y accède. – DampeS8N

+0

@ m.edmondson: c'est le point. le trafic reniflé n'est pas un texte brut. donc la "clé secrète" ne sera pas visible. @ DampeS8N: Je sais que ce n'est pas une façon. J'essayais de signaler une autre façon de "sécuriser" stocker un mot de passe sans texte brut. –

0

Eh bien, vous shouldn Ne les cryptez pas avec MD5 (qui n'est pas vraiment sécurisé, la plupart des pirates ont des tables de conversion). Par conséquent, vous pouvez le hacher avec SHA1 (qui est généralement utilisé).

Si vous voulez plus de sécurité, vous pouvez ajouter plus salt qui est une clé vous pouvez ajouter à ceci (juste un exemple, habituellement utilisé):

salt+sha1(salt+pass) 

Cette combinaison peut être utilisée avec beaucoup de langue .

+0

sha1 n'est plus sécurisé. sha256 ou 512 cependant, est. – DampeS8N

+0

@ DampeS8N 7 en fait c'est incorrect. sha1 est un peu plus fort, assez fort que personne n'a généré de collision et est toujours une fonction de hash recommandée par le NIST. Bien que sha256 devrait être utilisé, bien sûr. – rook

0

Hash mots de passe dans SHA-1 (fonction intégrée sha1 php) avec plusieurs récursions de salage (même code dans les réponses ci-dessus, seulement boucle à travers plusieurs fois). Cela devrait être une protection suffisante, donc même si les intrus mettent la main sur les hachages, ils ne devraient pas pouvoir les casser ...