我可能在Django的身份验证框架中发现了一个安全漏洞,用于重置密码。
使用django.contrib.auth
视图时,密码重置表单仅要求提供电子邮件,并期望该电子邮件是请求密码重置的已登录帐户的电子邮件。但是,我可以输入 any 注册帐户的电子邮件,并将密码重置链接发送到该电子邮件。如果我打开该电子邮件中的链接并输入新的所需密码,它将更改为该电子邮件中注册帐户的密码,而不是输入该电子邮件地址的帐户的密码。
这意味着,如果一个用户可以访问另一个用户的电子邮件,则该用户可以重置受感染用户的密码,而不必以受感染用户身份登录。
是否可以检查输入的密码重设电子邮件是否实际上是当前正在请求重设的用户的电子邮件?如果没有,是否有更好,更安全的方式来处理密码重置请求?