我正在开发一个Django有点电子商务项目,简而言之,我有一个Customer和Merchant模型。 Merchant模型与MerchantStore模型相关联,该模型在某种程度上“复杂”,具有过多的m2m和与各种模型的外键关系。
根据此post中的解决方案并且没有足够的“时间”来进行自定义实施,我决定让每个商家成为“填充成员”并通过管理界面自定义他的商店。在cource中,我创建了一个具有适当权限的新组。
然而,出现了一些问题:
1)这被认为有害吗?是否存在相关的安全威胁?
2)如果你还没有足够的时间,这不是最好的方法吗?
答案 0 :(得分:9)
不,我不认为这有害。
Apress的djangobook中所描述的“管理之禅”似乎意味着信任的假设是管理员“哲学”的一部分,并且与经常重复的“管理员不是你的应用程序”建议配对,我也害怕首先,并认为Django文档可以指出预期的,可行的用例。
请参阅我几乎完全相同的问题Django AdminSite/ModelAdmin for end users?
从约旦的回答(我给予赏金的人):
没有什么特别的天赋 关于管理员。它表现得像任何一样 其他观点。所以,如果它正在使用 确定访问权限(for 例如,如果您设置用户的.is_staff 为真,但只允许他们访问 具体权限)然后它会 同样安全的任何视图你可能 创建使用权限 确定访问权限。
...
写作的人 django.contrib.admin没有写它 假设任何人都有 一个is_staff = True可以信任为 像超级用户一样,或者是愚蠢的 足以永远不去看看 网页的源代码。虽然 鼓励写自己的观点, 它仍然是一个强大的界面。
另请注意Django最新的安全更新http://www.djangoproject.com/weblog/2010/dec/22/security/ 关于对象列表中的查询字符串参数。
这样的更新(引用:“有权访问管理员的攻击者”)清楚地表明管理员对权限系统的实施正在不断受到审查。
答案 1 :(得分:6)
是的,这被认为是“有害的”,主要是由于Django开发人员的设计考虑因素。管理员围绕“可信用户”的概念。换句话说,如果有人是工作人员(从而可以访问管理员),他们可能有足够的信任而不必担心安全漏洞。事实上,你可以阻止他们从他们不应该捣乱的部分(如你所做的那样),但重点是Django在这方面不做任何保证。实际上,您可能不会有任何问题,但可以。
具有讽刺意味的是,我认为我在生活中花费了更多时间来定制Django管理员,而不是从头开始构建它。有趣的是如何。无论如何,我把它比作在Ruby on Rails中使用脚手架。这是一种快速获取实物的方法,但目标是尽快更换它。