【问题标题】:Is auth customization secure in django?django 中的身份验证自定义是否安全?
【发布时间】:2019-08-12 22:04:42
【问题描述】:

我用 o2o 关系模型 (UserProfile) 扩展了用户模型。我想使用电子邮件/密码而不是用户名/密码登录。所以我定制了身份验证后端。

使用这种身份验证方式登录是否容易受到攻击?

from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend

class EmAuth(ModelBackend):
    def authenticate(self, request, username=None, password=None, **kwargs):
        UserModel = get_user_model()
        try:
            user = UserModel.objects.get(email=username)
        except UserModel.DoesNotExist:
            return None
        else:
            if user.check_password(password):
                return user
        return None

    def get_user(self, user_id):
        UserModel = get_user_model()
        try:
            return UserModel.objects.get(pk=user_id)
        except UserModel.DoesNotExist:
            return None

【问题讨论】:

    标签: python django security


    【解决方案1】:

    你并没有真正改变任何严重的事情。您的代码的唯一区别是您通过电子邮件获取用户,其余部分几乎相同。您使用的check_password 函数是一个内置函数,与默认身份验证方法使用的相同。因此,就代码中的漏洞而言,您无需担心。

    【讨论】:

      猜你喜欢
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 2016-05-21
      • 2017-01-07
      • 2015-11-12
      • 2020-05-04
      • 2021-02-06
      相关资源
      最近更新 更多