3

我想进行电子邮件确认注册,这样当用户注册时,他或她会收到一封带有确认链接的电子邮件。该链接类似于:www.site.com/confirm?id=34398df809as8df9然后将其与来自标准 aspnet 成员资格提供程序的数据库中的 UserId 匹配。使用 UserId 作为传递给电子邮件的 guid 是否会造成任何类型的漏洞或安全威胁?

4

3 回答 3

7

GUID 是链接中唯一的想法吗?如果是这样,那绝对不安全。这意味着一旦攻击者拥有任何人的 ID(例如通过找到旧电子邮件),他们就可以随时重置用户的密码。

密码重置链接至少应包含一次性使用的限时令牌。

于 2012-08-10T06:26:28.140 回答
4

我绝对不会在系统外部的任何内容中使用我的数据库中的主键。专门为注册循环创建一次性密钥,然后在注册完成后使其失效。

于 2012-08-10T06:27:38.823 回答
1

在我看来,这是不安全的,它可能会被滥用(虽然不是很容易但仍然......!)。您应该附加一个带有时间戳的确认链接,该时间戳嵌入了电子邮件的发送时间,并使用一些自定义逻辑进行了加密,该逻辑将包含 user_id 的计算哈希以及单个字符串中的时间戳,如果您想放入其他内容,则可以添加其他内容。

当您添加时间戳时,您可以添加验证该确认链接必须在 24 或 48 小时内使用,否则您必须生成一个新链接。

由你决定,但简单的 Guid 不是一个好主意。

于 2012-08-10T06:28:42.833 回答