向用户公开django管理员。有害的

向用户公开django管理员。有害的,django,django-admin,Django,Django Admin,我正在做一个Django的电子商务项目,简单地说,我有一个客户和一个商人模型。Merchant模型与MerchantStore模型相关联,MerchantStore模型在某种程度上是“复杂”的,与各种模型有过多的m2m和外键关系 按照本文中的解决方案,由于没有足够的“时间”进行自定义实现,我决定让每个商家都成为“stuff成员”,并通过管理界面自定义其店铺。当然,我创建了一个具有适当权限的新组 然而,出现了一些问题: 1) 这被认为是有害的吗?是否存在任何相关的安全威胁 2) 如果你没有足够的时

我正在做一个Django的电子商务项目,简单地说,我有一个客户和一个商人模型。Merchant模型与MerchantStore模型相关联,MerchantStore模型在某种程度上是“复杂”的,与各种模型有过多的m2m和外键关系

按照本文中的解决方案,由于没有足够的“时间”进行自定义实现,我决定让每个商家都成为“stuff成员”,并通过管理界面自定义其店铺。当然,我创建了一个具有适当权限的新组

然而,出现了一些问题:

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

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

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


具有讽刺意味的是,我认为我一生中花在定制Django管理员上的时间比从头开始构建它所花的时间还要多。真有趣。不管怎样,我把它比作在RubyonRails中使用脚手架。这是一种快速获取生活的方法,但目标是尽快替换它。

< P>不,我不认为这是有害的。

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

请看我几乎相同的问题

根据乔丹的回答(我给了他赏金):

没有什么天生的特别之处 关于管理员。它的行为就像任何 其他观点。因此,如果它正在使用 确定访问权限的权限(用于 例如,如果您设置了用户的.is\u人员 为真,但只允许他们访问 特定权限)则将 对任何可能的视图都同样安全 创建使用权限来 确定访问权限

那些写信的人 django.contrib.admin没有编写它 假设任何人 is_staff=True可以作为 就像一个超级用户,或者很愚蠢 足以让你永远不去看电影 网页的源代码。虽然 鼓励写下自己的观点, 它仍然是一个健壮的接口

还要注意Django最近的安全更新 关于对象列表中的查询字符串参数


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

换句话说,一个超级恶意的黑客,比如黑客,会不会捣乱并对整个系统造成严重破坏?这在技术上可行吗?实现起来有多容易?特权系统难道不像linux权限系统那样具体吗?好吧,就“黑客”而言,在最佳条件下,管理员通常不会有更多的风险。真正令人担忧的是,有些东西可能由于意外或疏忽而暴露给用户,而这些用户本来就不应该看到它。Django管理员是为员工设计的,他们是组织内您信任并授予特权的人员。超出这个范围就意味着你在冒险。标准行是不允许“普通”用户访问管理员。你可以选择忽略这一点,但这样做的风险由你自己承担。好吧,在是和否之间,后者对我来说更方便!