电子邮件激活安全校验和

问题描述

| 香港专业教育学院一直在我的网站上征求一些反馈,我收到的一条评论是 \“我通过email@email.com注册,并设法通过http://www.mysite.co.uk/activateuser.php?email=email@email.com激活了我的帐户 您需要校验和才能停止它。\“ 谁能详细说明一下,以及如何在激活中实现它们? 从理论上讲,如果我要在数据库中创建一个名为“ rand_key \”的行,并且当用户注册一个随机密钥存储在该列中时,我是否可以将其用作激活而不是电子邮件?从而使其变得难以猜测?     

解决方法

        您需要创建一个唯一的用户密钥,该密钥不应与用户数据相关。通常,您可以执行一些操作,例如对随机生成器函数的输出进行哈希处理,以使其唯一并使用它。然后,将它们指向链接: http://www.mysite.co.uk/activateuser.php?userid=generation-unique-hashed-key 该唯一的用户密钥应作为额外字段添加到存储用户信息的表中,或以其他方式与用户相关。通过使密钥与用户数据无关,可以确保没有人能发现用户的密钥并恶意激活/执行其他操作来代替您的用户。 然后,在某些情况下,您应该在到达时测试用户密钥: 尚未授权-授权 已经授权-某些错误 错误的钥匙-某些错误 另外,应该有一个与您的用户相关联的到期日期,在此日期之前,您只需停用用户及其密钥即可。     ,        该人员表示,您可以通过转到该URL并将电子邮件地址放入thr URL来激活您的地址。您可以这样做,而无需实际获取激活电子邮件。 通过使用校验和,您可以迫使用户单击该链接。例如。 Activate.php?email=aaa@bbb.com&check=A1234b23 在发送电子邮件时,您将生成一个随机代码。将此存储在数据库中的某个位置。将其附加到给定用户的URL。当用户单击链接时,您检查代码是否与为该电子邮件地址存储的代码匹配。如果匹配,请验证电子邮件。否则不要。     ,           理论上,如果我要创建一个行   在我的数据库中以及当   用户注册存储一个随机密钥   在专栏中,我可以使用这个吗   作为激活而不是   电子邮件?从而使其变得难以猜测? 是。请记住,您不一定要像唯一的随机数那样多(为了避免两个电子邮件地址意外获得相同的激活码)。 您可以执行以下操作:
$key = mt_rand().\'-\'.uniqid(\'\',true);

echo \'http://mysite.com/activate?key=\'.urlencode(base64_encode($key));
那将很难猜到并且将保证是唯一的。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...