php - 生成注册激活 key 时如何防止冲突?

标签 php random passwords key activation

我正在研究一个大项目的注册系统。

注册成功后,服务器会生成一些激活 key ,将其添加到用户行并通过电子邮件发送给用户。为此目的使用一些密码生成器类。

问题是(我知道这听起来很抽象,但我只是想知道),如何避免重复生成 pass?我的意思是,将来生成器是否有可能创建数据库表中已经存在的激活 key ?我应该在 key 生成后检查重复项吗?

最佳答案

我建议使用 Text_Password package来自梨。不要试图重新发明这个轮子。

不要强制密码严格唯一。强制执行实际上不太安全。考虑一下,如果我尝试将密码设置为 xyzzy 而网站告诉我不能,这意味着现在我知道某些帐户正在使用 xyzzy 作为密码。我只需要在所有帐户上尝试使用该密码,直到找到哪个帐户。

不要使用哈希摘要作为生成的密码。您的用户不想输入 32 个字符(或更长)的十六进制字符串。我有过在 2001 年使用 PKI 和 MD5 哈希编写安全软件激活 key 包的经验。但是没有人会使用它,因为 key 太长了。

请使用散列摘要和盐来存储密码。阅读我们无所畏惧的领导者的这篇文章:You're Probably Storing Passwords Incorrectly .

另请参阅我对其他一些密码相关问题的回答:

关于php - 生成注册激活 key 时如何防止冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100636/

相关文章:

javascript - 根据背景更改导航字体颜色

php - Symfony 自动加载命名空间问题

php - WordPress 导航菜单未显示在自定义存档页面上

c - 如何在C语言的cooja模拟器中获得一个随时间变化的随机数?

security - 网站登录: how should user credentials be sent to the server for verification?

php post密码例程?

version-control - 在开源项目中保护密码

php - 动态准备语句(绑定(bind)参数错误)

java - 多维数组,同一行没有重复的数字

python - 从固定数量的项目创建随机顺序的组合列表