重置密码链接 - 用户ID

时间:2018-03-26 22:41:24

标签: c# asp.net-core asp.net-identity

我创建了一个重置​​用户密码的链接,如下所示:

https://localhost:5001/ResetPassword?id=a33183db-f7f6-45aa-b8dc-7fe101e04682&token=CfDJ8KXvGzIVoh9Knrlx

id是用户ID([dbo].[AspNetUsers].[Id]),令牌是UserManager.GeneratePasswordResetTokenAsync

的结果

将用户ID直接放入网址是否存在安全风险?它是否被忽视了?

1 个答案:

答案 0 :(得分:2)

这一切都取决于您的要求以及您认为安全的内容。在99%的应用程序中,在链接中传递随机(查看)GUID将不会向外部攻击者提供任何信息。除非您的应用程序中有某个页面显示基于ID的用户信息(即http://localhost/users/ {id})。但这可以算作一个漏洞本身(虽然取决于应用程序)。

所以在这种情况下,我会说提供身份证没有重大问题。但是,如果您非常偏执,则可以省略ID并仅在链接中传递令牌。然后在密码重置页面上,您可以再次要求发送电子邮件,从该电子邮件中获取用户ID并继续密码重置。