Home >Backend Development >PHP Tutorial >用户通过邮箱注册后的激活,安全性高的处理方案?

用户通过邮箱注册后的激活,安全性高的处理方案?

WBOY
WBOYOriginal
2016-06-06 20:50:041253browse

正常情况下的步骤:
1、进入注册页
2、验证邮箱正确性 3、生成邮箱账号激活码code(自加密)
4、发送至注册邮箱的激活邮件,包含激活URL
5、点击激活URL,判断生效
6、激活成功,跳转至登陆页面

问题:
1、以上步骤是否完善?
2、激活码code一般包含哪些内容?
3、如果注册邮箱不是注册人本身拥有的,那收到激活邮件的邮箱拥有者点击后,是否也可以实现激活?

回复内容:

正常情况下的步骤:
1、进入注册页
2、验证邮箱正确性 3、生成邮箱账号激活码code(自加密)
4、发送至注册邮箱的激活邮件,包含激活URL
5、点击激活URL,判断生效
6、激活成功,跳转至登陆页面

问题:
1、以上步骤是否完善?
2、激活码code一般包含哪些内容?
3、如果注册邮箱不是注册人本身拥有的,那收到激活邮件的邮箱拥有者点击后,是否也可以实现激活?

SegmentFault注册目前使用的基本就是你说的这个流程

  1. 这个流程是完整的
  2. code只是一个哈希值,以它为key应该在你的存储系统中找到一个激活信息,当然为了安全期间这个哈希code要够长,而且碰撞性要比较低才可以,一般32位的md5值可以满足要求
  3. 这个风险是存在的,因此你要在注册邮件中说明“如果此邮件不是由你触发的,那么请忽略它”之类的话语,当然还要给这类注册链接设置一个过期时间,一般1到3天较为妥当,这样可以尽量避免误触发的情况

流程大体都一样的。

我现在是这么做的:

<code><?php $url_prefix = 'http://account.domain.com/active?';
$timestamp = time();

$sign = sha1($uid.$timestamp.'AUTH_KEY');

$url = $url_prefix.='&time='.$timestamp.'&sign='.$sign;

</code></code>

如果不放心,那就搞复杂一些--在激活页面提供登陆渠道: 在邮箱中点链接之后进入激活页面,忽略cookie之类的信息,让用户登陆一次,根据用户名、密码和激活码三个来激活账号

还有两个部分你漏掉了。

1、每次有新用户注册,记录并验证 IP、MAIL 地址注册次数。 2、发激活 MAIL 后记录此地址发信时间。

目的只有一个,就是防止有人用激活邮件做为攻击别人邮箱的工具。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn