使用电子邮件验证 link 并使用 salt 字符串散列用户 ID。安全吗?

Verification link with email and hashed user id with salt string. Is it secure?

您如何看待创建一个验证 link,其中的查询字符串由参数 emailhash 组成?

我也在考虑切换盐,但是可以猜测给定电子邮件的用户 ID 号,将其传递给 password_hash 并获得查询字符串的有效哈希值(即使 password_hash 自己自动添加盐。),所以我认为它不安全。

我是这样想的:

// the result of SELECT from the database (I use Mysql)
$id    = '5';
// fixed salt string
$salt  = 'xbrENiBq6kb87WrZYhxS';
$email = urlencode($email);
$key   = $id . $salt;
$hash  = urlencode(password_hash($key, PASSWORD_DEFAULT));

// the resulted querystring:
$url = "somesite.com/index.php?email=$email&hash=$hash";

然后我会把它发送到用户邮箱。

拜托,你能告诉我,你在想什么?非常感谢!

取决于你的编码,你可以尝试混合各种类型的编码来达到真正的价值。与数据库进行比较的最终结果必须是 md5 字符串,这样您也不会损失性能。

SELECT md5(your_field) FROM table

抱歉英语不好。