使用我的UserId Guid作为我的电子邮件确认链接是否安全?

时间:2012-08-10 06:23:52

标签: c# asp.net asp.net-mvc-3

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

3 个答案:

答案 0 :(得分:7)

GUID 是否在链接中思考?如果是这样,那绝对不安全。这意味着一旦攻击者拥有任何人的身份证(例如,通过查找旧邮件),他们就可以随时重置用户的密码。

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

答案 1 :(得分:4)

我肯定不会在系统之外的任何东西中使用我的数据库中的主键。创建一个专门用于注册循环的一次性密钥,然后在注册完成后使其无效。

答案 2 :(得分:1)

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

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

由你决定但普通的Guid不是一个好主意。