【问题标题】:Exposing django admin to users. Harmful?向用户公开 django 管理员。有害?
【发布时间】:2023-03-21 21:57:01
【问题描述】:

我正在从事一个有点像 Django 的电子商务项目,简而言之,我有一个 Customer 和一个 Merchant 模型。 Merchant 模型与某个“复杂”的 MerchantStore 模型相关联,具有过多的 m2m 和与各种模型的外键关系。

遵循post 中的解决方案并且没有足够的“时间”来进行自定义实现,我决定让每个商家成为“stuff member”并通过管理界面自定义他的商店。当然,我创建了一个具有适当权限的新组。

但是,出现了一些问题:

1) 这被认为是有害的吗?是否存在相关的安全威胁?

2) 如果你没有足够的时间,这不是最好的方法吗?

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    不,我不认为这是有害的。

    Apress 的 djangobook 中描述的“管理员禅”似乎暗示了信任假设是管理员“哲学”的一部分,再加上经常重复的“管理员不是你的应用程序”的建议,我也很害怕起初并认为 Django 文档可以指出预期的、可行的用例。

    请看我几乎相同的问题Django AdminSite/ModelAdmin for end users?

    来自乔丹的回答(我给予了赏金):

    本质上并没有什么特别之处 关于管理员。它的行为就像任何 其他观点。所以如果它正在使用 确定访问权限(对于 例如,如果您设置用户的 .is_staff 为 True 但只允许他们访问 特定权限)然后它将是 对您可能看到的任何视图同样安全 创建使用权限 确定访问权限。

    ...

    写作的人 django.contrib.admin 没有写 假设任何人 is_staff = True 可以被信任为 就像超级用户一样,或者很愚蠢 足以从不看 网页的源代码。虽然 鼓励写自己的观点, 它仍然是一个强大的界面。

    另请注意 Django 相对较新的安全更新http://www.djangoproject.com/weblog/2010/dec/22/security/ 关于对象列表中的查询字符串参数。

    这样的更新(引用:“有权访问管理员的攻击者 [...]”)清楚地表明管理员对权限系统的实施正在不断受到审查。

    【讨论】:

    • 嗯,在yes和no之间,后者对我来说更方便!
    【解决方案2】:

    是的,这被认为是“有害的”,主要是由于 Django 开发人员的设计考虑。管理员围绕“受信任的用户”的概念展开。换句话说,如果某人是工作人员(因此可以访问管理员),他们大概有足够的信任,不必担心安全漏洞。现在实际上,您可以将它们从不应该弄乱的部分中阻止(就像您所做的那样),但关键是 Django 在这方面不做任何保证。实际上,您可能不会有任何问题,但您可以。

    具有讽刺意味的是,我认为我在生活中定制 Django 管理员所花费的时间比我从头开始构建它所花费的时间还要多。有趣的是这是怎么回事。无论如何,我将它比作在 Ruby on Rails 中使用脚手架。这是一种快速上线的方法,但目标是尽快替换它。

    【讨论】:

    • 那么,换句话说,一个超级恶意的黑客,比如黑客,会不会乱搞并对整个系统造成严重破坏?这在技术上是否可行,实现起来有多容易?权限系统不是和linux权限系统一样具体吗?
    • 好吧,就“黑客攻击”而言,确实没有比管理员通常在最佳条件下更大的风险。真正令人担忧的是,某些东西可能会因意外或疏忽而暴露给原本不应该看到的用户。 Django 管理员专为员工、组织内您信任并授予权限的人员而设计。超出该范围本质上意味着您正在承担风险。标准行是不允许“普通”用户访问管理员。您可以选择忽略这一点,但风险自负。
    猜你喜欢
    • 2020-06-16
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-24
    相关资源
    最近更新 更多