Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 电子邮件激活安全校验和_Php_Checksum - Fatal编程技术网

Php 电子邮件激活安全校验和

Php 电子邮件激活安全校验和,php,checksum,Php,Checksum,我一直在我的网站上询问一些反馈,我收到的一条评论如下 我和email@email.com并设法激活了我的帐户 你需要校验和来阻止它 有人能详细说明一下这一点,以及我如何在激活中实现它们吗 理论上,如果我要在我的数据库中创建一个名为rand_key的行,并且当用户注册一个随机密钥存储在该列中时,我是否可以将其用作激活,而不是电子邮件?因此不可猜测?此人的意思是,你可以通过访问该url并简单地将电子邮件地址放入url来激活你的地址。你可以在没有收到激活邮件的情况下完成这项工作 通过使用校验和,您可以

我一直在我的网站上询问一些反馈,我收到的一条评论如下

我和email@email.com并设法激活了我的帐户

你需要校验和来阻止它

有人能详细说明一下这一点,以及我如何在激活中实现它们吗


理论上,如果我要在我的数据库中创建一个名为rand_key的行,并且当用户注册一个随机密钥存储在该列中时,我是否可以将其用作激活,而不是电子邮件?因此不可猜测?

此人的意思是,你可以通过访问该url并简单地将电子邮件地址放入url来激活你的地址。你可以在没有收到激活邮件的情况下完成这项工作

通过使用校验和,您可以强制用户单击链接。例如。 激活.php?电子邮件=aaa@bbb.com&检查=A1234b23


在发送电子邮件时,您将生成一个随机代码。将其存储在数据库中的某个位置。将其附加到给定用户的url。当用户单击链接时,您将检查代码是否与为该电子邮件地址存储的代码匹配。如果匹配,请验证电子邮件。否则不要。

此人的意思是,你可以通过转到该url并将电子邮件地址简单地放入url来激活你的地址。你可以在没有收到激活邮件的情况下完成这项工作

通过使用校验和,您可以强制用户单击链接。例如。 激活.php?电子邮件=aaa@bbb.com&检查=A1234b23


在发送电子邮件时,您将生成一个随机代码。将其存储在数据库中的某个位置。将其附加到给定用户的url。当用户单击链接时,您将检查代码是否与为该电子邮件地址存储的代码匹配。如果匹配,请验证电子邮件。否则不需要。

您需要创建一个唯一的用户密钥,该密钥不应与用户数据相关。通常,您可以对随机生成器函数的输出进行哈希运算,以使其唯一并使用它。然后将它们指向链接:

此唯一用户密钥应作为额外字段添加到存储用户信息的表中,或以其他方式与用户相关。通过保持密钥与用户数据无关,您可以确保没有人能够发现用户的密钥并恶意激活/执行其他操作,而不是您的用户

然后,您应该在到达时测试用户密钥的某些条件:

尚未授权-授权 已授权-某些错误 错误的键-某些错误
此外,应该有一个与您的用户相关联的过期日期,在此日期后,您只需停用该用户及其密钥。

您需要创建一个唯一的用户密钥,该密钥不应与用户数据相关。通常,您可以对随机生成器函数的输出进行哈希运算,以使其唯一并使用它。然后将它们指向链接:

此唯一用户密钥应作为额外字段添加到存储用户信息的表中,或以其他方式与用户相关。通过保持密钥与用户数据无关,您可以确保没有人能够发现用户的密钥并恶意激活/执行其他操作,而不是您的用户

然后,您应该在到达时测试用户密钥的某些条件:

尚未授权-授权 已授权-某些错误 错误的键-某些错误 此外,应该有一个与您的用户相关联的过期日期,在此日期之后,您只需停用该用户及其密钥

理论上,如果我要创建一行 我的数据库中的命名随机密钥 用户注册存储的随机密钥 在专栏中,我可以用这个吗 作为激活,而不是 电子邮件因此无法猜测

对。请记住,为了避免两个电子邮件地址意外地获得相同的激活码,您不一定想要随机的,也不一定想要唯一的

你可以这样做:

$key = mt_rand().'-'.uniqid('', true);

echo 'http://mysite.com/activate?key='.urlencode(base64_encode($key));
这将是很难猜测的,并保证是独一无二的

理论上,如果我要创建一行 我的数据库中的命名随机密钥 用户注册存储的随机密钥 在专栏中,我可以用这个吗 作为激活,而不是 电子邮件因此无法猜测

对。请记住,为了避免两个电子邮件地址意外地获得相同的激活码,您不一定想要随机的,也不一定想要唯一的

你可以这样做:

$key = mt_rand().'-'.uniqid('', true);

echo 'http://mysite.com/activate?key='.urlencode(base64_encode($key));

这很难猜测,而且保证是唯一的。

根本不需要URI中的电子邮件。只要发送一些长的,不可用的数字。如果它只是一个数值,我可以写一个脚本,从0到1亿,然后激活所有地址。电子邮件+字母数字代码是最好的方式,根本不需要URI中的电子邮件。只要发送一些长的,不可用的数字。如果它只是一个数值,我可以写一个脚本,从0到1亿,然后激活所有地址。电子邮件+字母数字代码是最好的方式