向用户公开django admin.有害?

hym*_*oth 10 django django-admin

我正在开发一个Django有点电子商务项目,简而言之,我有一个Customer和Merchant模型.Merchant模型与MerchantStore模型相关联,该模型以某种方式"复杂",具有过多的m2m和与各种模型的外键关系.

按照这篇文章中的解决方案并且没有足够的"时间"来进行自定义实现,我决定让每个商家成为"东西成员"并通过管理界面自定义他的商店.在cource中,我创建了一个具有适当权限的新组.

但是,出现了一些问题:

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

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

Dan*_*air 9

不,我不认为这有害.

Apress的djangobook中所描述的"管理之禅"似乎意味着信任的假设是管理者"哲学"的一部分,并且与经常重复的"管理员不是你的应用程序"的建议配对,我也一开始害怕认为Django文档可以指出预期的,可行的用例.

请查看我最近用户的几乎相同的问题Django AdminSite/ModelAdmin?

从约旦的回答(我给予赏金的人):

管理员没有什么特别的特殊之处.它的行为与任何其他视图一样.因此,如果它使用权限来确定访问权限(例如,如果您将用户的.is_staff设置为True但只允许他们访问特定权限)那么对于您可能创建的使用权限来确定访问权限的任何视图都同样安全.

...

编写django.contrib.admin的人并没有编写它,假设任何拥有is_staff = True的人都可以像超级用户一样受信任,或者愚蠢到永远不会看到网页的源代码.虽然鼓励编写自己的视图,但它仍然是一个强大的界面.

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

这样的更新(报价:"与访问管理的攻击者[...]"),是一个明显的迹象表明,管理员的执行许可制度正在不断审查.


Chr*_*att 6

是的,这被认为是"有害的",主要是由于Django开发人员的设计考虑因素.管理员围绕"可信用户"的概念.换句话说,如果有人是工作人员(从而可以访问管理员),他们可能有足够的信任而不必担心安全漏洞.事实上,你可以阻止他们从他们不应该捣乱的部分(如你所做的那样),但重点是Django在这方面不做任何保证.实际上,你可能不会有任何问题,但你可以.

具有讽刺意味的是,我认为我在生活中花费了更多时间来定制Django管理员,而不是从头开始构建它.有趣的是如何.无论如何,我把它比作在Ruby on Rails中使用脚手架.这是一种快速获取实物的方法,但目标是尽快更换它.