使用md5哈希作为注册字符串令牌是安全的吗?

时间:2016-02-21 15:15:06

标签: php security cakephp email-confirmation

我开始在我的项目上开发用户注册。用户将通过电子邮件发送的链接确认他们的注册。

我以为我可以使用在表单上插入的电子邮件,加上一个随机的salt,并对这个连接的字符串进行散列,这样每个字符串令牌都是唯一的。链接将是这样的:

http://www.example.com/register/7ddf32e17a6ac5ce04a8ecbf782ca509

我认为它很容易构建,但我不确定它是否足够安全。

我正在使用CakePHP 2.7和SQL Server 2014开发此项目。

1 个答案:

答案 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