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