【发布时间】:2013-07-07 17:15:05
【问题描述】:
我正在使用 Django 的默认用户模型,并且电子邮件不是唯一的,现在我有多个用户使用相同的电子邮件地址。
您可以让 User_A 使用电子邮件地址 user_a@example.com,然后新用户 User_B 可以使用相同的电子邮件地址 user_a@example.com 注册。
这在任何编程领域都没有意义,它会导致与电子邮件发送功能混淆,并可能导致密码重置错误(如果发送密码重置链接,两个用户共享相同的电子邮件地址)。
在我看来,这并没有明显的安全漏洞,因为只有原始用户可以控制原始电子邮件地址,因此攻击者不会收到重置电子邮件。
但是,这可能会导致原始用户 User_A 被锁定在他的原始帐户之外(如果他忘记了密码)并被阻止发出密码重置,因为 Django 仅尝试重置新用户 User_B。显然 User_A 想要访问他的帐户,而不是 User_B 的帐户。
- 理由是什么?
- 显然密码重置功能与电子邮件相关联,所以如果我根据电子邮件重置密码,哪个用户(在点击密码重置链接后)将被重置?
- 如何使电子邮件字段独一无二?
【问题讨论】:
-
也许您希望此人拥有两个不同的帐户?
-
@Seth 不是重复的,我也在问密码重置的行为。
-
@Seth 抱歉,让两个帐户使用同一个电子邮件是没有意义的,而且我从未在任何地方看到过这种行为。
-
django pre-1.5 有一些缺点,所以他们引入了可配置的用户选项模型。现在,应该在
view或表单的clean方法中处理创建具有重复电子邮件的用户对象。
标签: python django security django-models