我创建了一个重置用户密码的链接,如下所示:
https://localhost:5001/ResetPassword?id=a33183db-f7f6-45aa-b8dc-7fe101e04682&token=CfDJ8KXvGzIVoh9Knrlx
id是用户ID([dbo].[AspNetUsers].[Id]
),令牌是UserManager.GeneratePasswordResetTokenAsync
将用户ID直接放入网址是否存在安全风险?它是否被忽视了?
答案 0 :(得分:2)
这一切都取决于您的要求以及您认为安全的内容。在99%的应用程序中,在链接中传递随机(查看)GUID将不会向外部攻击者提供任何信息。除非您的应用程序中有某个页面显示基于ID的用户信息(即http://localhost/users/ {id})。但这可以算作一个漏洞本身(虽然取决于应用程序)。
所以在这种情况下,我会说提供身份证没有重大问题。但是,如果您非常偏执,则可以省略ID并仅在链接中传递令牌。然后在密码重置页面上,您可以再次要求发送电子邮件,从该电子邮件中获取用户ID并继续密码重置。