Orc*_*rca 5 python security django django-models
我使用Django的默认用户模型,电子邮件不是唯一的,现在我有多个用户使用相同的电子邮件地址.
您可以将User_A的电子邮件地址设置为user_a@example.com,然后新用户User_B可以使用相同的电子邮件地址user_a@example.com进行注册.
这在任何编程领域都没有意义,它会导致电子邮件发送功能混淆,并可能导致错误的密码重置(如果发送密码重置链接,两个用户共享相同的电子邮件地址).
这并不像我看到的那样存在明显的安全漏洞,因为只有原始用户才能控制原始电子邮件地址,因此攻击者不会收到重置的电子邮件.
但是,这可能导致原始用户User_A被锁定在其原始帐户之外(如果他忘记了密码)并且因为Django尝试仅重置新用户User_B而无法发出密码重置.显然User_A想要访问他的帐户,而不是User_B的帐户.
密码重置功能确实基于电子邮件地址.
它会向所有拥有相应电子邮件的帐户发送重置电子邮件.
传递给电子邮件模板的上下文包括user,因此您的电子邮件重置消息可能包含用户名,以便用户识别将重置的密码.
所有这些都可以通过使用以下方式覆盖:
django.contrib.auth 使用用户名字段来标识用户,而不是电子邮件地址,因此如果两个用户具有相同的电子邮件地址,则不会发生冲突。
此外,由于不需要电子邮件地址,因此它在数据库中为空或为空(这两种情况都不能形成良好的唯一键)。
对于您的另一个问题 - 密码重置将重置请求它的用户的密码,因为它是按用户名请求的。
拥有两个具有相同地址的帐户会非常方便。例如,也许一个是管理员帐户,另一个是普通用户。
| 归档时间: |
|
| 查看次数: |
1561 次 |
| 最近记录: |