注册方法选项

时间:2013-12-28 02:02:46

标签: security passwords registration

我有一个基于asp.net会员安全性的注册页面。基本上,您完成注册并将其登录。

我想按照很多网站使用的方法,一旦您注册,您将通过电子邮件发送到您必须登录的网页的链接,然后才能确认您的注册。而且您知道用户输入了有效的电子邮件。

有两个问题:

我假设您在电子邮件中提供的网址必须是唯一的。它必须设置为过期。我认为,每个用户必须获得不同的URL,因此您必须屏蔽它或者必须验证层级帐户的页面名称才能供所有人使用。而且我认为它必须到期。

这是如何实现的?

2 个答案:

答案 0 :(得分:0)

我在PHP方面有更多经验,所以我会提供代码示例,但这些概念应该是跨语言的。

  1. 唯一网址:此网址可以很容易地基于用户名的哈希值。 (security_salt可以是任何东西,只是为了防止其他人重新创建URL)。

    $ registerurl =" /resigter.php?id =" .md5($ username。" security_salt");

  2. 要在一段时间后过期,请使用用户的用户名和他们的页面到期时间建立一个数据库。请求页面时,应检查数据库。

答案 1 :(得分:0)

有一张包含以下内容的表格:

Username    Email                  Date Registered        Unique ID    Expiry                 Confirmed    Date Confirmed
foo         foo@example.com        2013-12-28 15:30 UTC   123456       2013-12-30 15:30 UTC   true         2013-12-28 15:35 UTC

因此,要确认的链接可能是www.example.com/ConfirmRegistration.aspx?id=123456。此页面将检查Expiry是否在将来Confirmedfalse以阻止Date Confirmed多次更新,然后如果这些值为OK,则会设置Confirmedtrue并将Date Confirmed设置为当前日期。

应使用RandomNumberGenerator类的实现生成ID,以便以安全,不可预测的方式生成ID。

过去Expiry Confirmed false Username的任何条目都可以使用预定流程进行清理,从而允许{{1}}重新注册。

使用唯一ID比使用用户名的哈希更好,因为这会阻止某人注册真实的电子邮件地址,等待他们的数据库条目过期,然后使用虚假的电子邮件地址注册,然后使用用于确认虚假地址的原始电子邮件(因为用户名的哈希值仍然相同)。当然,这假设盐在全局范围内,但如果您为每个用户存储盐,为什么不简单地链接到随机ID,因为无论如何这必须是加密安全的。