8
votes

Le MD5 est-il un bon moyen de générer le code de vérification de compte

Lorsque les utilisateurs enregistrent un compte, ils reçoivent un courrier électronique avec un code de vérification qu'ils peuvent cliquer pour vérifier leurs comptes.

C'est comme ça que je génère le code de vérification. P>

md5(rand(0,1000)


2 commentaires

"Il devrait adopter un attaquant seulement un essai de 1000 pour vérifier le compte sans qu'elle leur appartiennent vraiment" C'est pourquoi vous avez également besoin de limiter le taux.


@NULLUSEXEXCEPTION De quel tarif limitez-vous? Les attaquants utiliseront plusieurs adresses IP et tenteront d'enregistrer plusieurs comptes ...


3 Réponses :


2
votes

Il suffit de semer avec quelque chose que l'attaquant n'a pas pu savoir:

md5(md5(time().'helloguys'.rand(0,9999)));


7 commentaires

Plus l'entropie, mieux c'est. Je mettais au moins l'ID utilisateur ou le courrier électronique de la personne inscrite, ainsi que le temps de la plus grande précision possible.


@John Eh bien, j'ai enseigné de suggérer des graines générées par le tour d'un atome, mais vous connaissez le coût et tout cela.


Rand () est horrible et ne doit jamais être utilisé pour la sécurité, MT_RAND () est meilleur. Aussi, l'attaquant sait du temps (), il est celui qui crée le compte.


@Rook: MT_RAND est également ensemencé par le temps. Il est toujours difficile pour l'attaquant de deviner le temps jusqu'à la milliseconde (et devinez le sel "helloguys").


@Olhovsky ouais, mais / dev / aléatoire est meilleur.


@Iznogood Il est tout basé sur le secret Séjour Secret, les chances n'est pas si bonne avec elle d'être en cours sur le serveur. Pourquoi ne pas jouer sa sécurité a, D lire 128 bits de / dev / aléatoire ... Votre solution joue avec le feu, quelqu'un va être brûlé. Conseils dangereux.


MD5 n'aurait jamais été utilisé pour rien de sécurité.



5
votes

Ce fil Comment générer un code de vérification / numéro? a de bonnes pensées sur la question. HASHES, hachages réversibles, chiffres de contrôle ... Beaucoup d'options en fonction de vos besoins.


0 commentaires

3
votes

rand (1,1000) est de 10 bits d'entropie. Md5ing il ajoute nul. En moyenne, il faudra 500 tentatives pour un attaquant pour vérifier un compte. Aucune limitation de taux ne vous aidera, car les attaquants qualifiés loueront ou posséderont déjà un botnet qui sera utilisé pour valider les comptes.

Jouez-le en sécurité et avez 128 bits d'entropie dans vos liens de vérification. Dans php openssl_random_pseudo_bytes (16, true) est Le moyen portable d'obtenir des octets aléatoires cryptographiquement forts, mais si vous hébergez sous certaines distributions Linux ou l'un des systèmes d'exploitation BSD, la lecture / dev / urandom est également un choix acceptable.

Question également la sagesse des comptes de vérification du tout, de nombreuses personnes utilisent des courriels jetables non traités exactement pour cela (et aucune liste noire ne sera jamais à jour).


0 commentaires