【问题标题】:Is it safe to grant "auth | User | Can change user" permissions without the "is staff" flag?在没有“is staff”标志的情况下授予“auth | User | Can change user”权限是否安全?
【发布时间】:2017-07-05 10:16:19
【问题描述】:

我需要某些用户编辑django.contrib.auth.models.User 对象。

我的第一个想法是授予他们auth | User | Can change user 权限并将他们标记为is staff,这样他们就可以登录到 Django 管理站点。但问题是,他们可以用它来让自己成为超级管理员。

由于我希望他们只能编辑某些字段,因此我为此创建了一个非常有限的视图。剩下要做的就是将对该视图的权限实际授予该用户子集。我发现的唯一解决方案是仍然授予他们auth | User | Can change user 权限(而不是让他们staff)。

我的问题是这样的:

如果我在该视图上使用 @permission_required 装饰器并与 auth | User | Can change user 权限合作,用户是否有任何其他方式可以破解自己的超级管理员角色(即使假设用户是高级Django 程序员)?我说的是e之类的东西。 G。我不知道或类似的 API 调用。

我想将我的代码中可能出现的错误排除在此处的范围之外。

【问题讨论】:

    标签: django django-authentication django-1.11


    【解决方案1】:

    创建custom permission 可能会更好,例如'can_change_user_restricted',并在您的自定义视图中检查该权限。

    那么您不必担心将来可能会添加另一个视图/api,或者可能会设置 is_staff 标志,然后用户突然可以让自己成为超级用户。

    【讨论】:

      【解决方案2】:

      恕我直言,是的,使用您自己的类型/在用户上创建任何类型的自定义字段非常安全。

      在我们的一个项目中,我们添加了 2-3 种类型的管理员用户,这非常安全。我们添加了维护者、管理员、超级用户和两种类型的最终用户(这是必需的)。我们还在 Django Admin 中进行了许多自定义,以便在 Django Admin 中列出所有类型的组和用户。

      JFYI 我们没有向客户提供对 Django Admin 的访问权限,我们提供了超级用户登录来创建任何类型的用户来访问我们的工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 1970-01-01
        相关资源
        最近更新 更多