我开始在我的项目上开发用户注册。用户将通过电子邮件发送的链接确认他们的注册。
我以为我可以使用在表单上插入的电子邮件,加上一个随机的salt,并对这个连接的字符串进行散列,这样每个字符串令牌都是唯一的。链接将是这样的:
http://www.example.com/register/7ddf32e17a6ac5ce04a8ecbf782ca509
我认为它很容易构建,但我不确定它是否足够安全。
我正在使用CakePHP 2.7和SQL Server 2014开发此项目。
答案 0 :(得分:6)
这实际上取决于您如何生成MD5。确保您的数据是随机的。我不会使用MD5来生成这些类型的哈希值,而是会执行以下操作:
$email_token = openssl_random_pseudo_bytes(16);
$token = bin2hex($email_token);
就个人而言,如果使用PHP7,我会选择使用random_bytes这样的东西。
$email_token = bin2hex(random_bytes($length));
对于PHP5,可以使用填充物:https://github.com/paragonie/random_compat