MD5是生成帐户验证码的好方法

dav*_*ave 8 php security registration

当用户注册帐户时,他们会收到一封包含验证码的电子邮件,他们可以点击该验证码验证其帐户.

这就是我生成验证码的方法.

md5(rand(0,1000)
Run Code Online (Sandbox Code Playgroud)

使用下面的方法是一个糟糕的选择?它生成0-1000之间的随机数.由于只有1000个选项,并且他们的MD5哈希值是已知的,因此攻击者只需1000次审判即可验证帐户,而不会真正属于他们

Far*_*ray 5

这个帖子如何生成验证码/号码?对此事有一些好的想法.哈希,可逆哈希,校验位......根据您的需要提供多种选择.


Izn*_*ood 2

只需用攻击者无法知道的东西播种即可:

md5(rand(0,1000).'helloworld234');
Run Code Online (Sandbox Code Playgroud)

你的疯狂程度是没有限制的

md5(md5(time().'helloguys'.rand(0,9999)));
Run Code Online (Sandbox Code Playgroud)

太多了,但你明白了。

  • 熵越大越好。我至少会尽可能精确地输入注册者的用户 ID 或电子邮件以及时间。 (4认同)
  • @John 嗯,我教过建议一些由原子自旋产生的种子,但你知道成本等等。 (3认同)