2011-05-20 107 views
6

我正在研究一個Django有點電子商務項目,簡而言之,我有一個Customer和一個Merchant模型。 Merchant模型與某種「複雜」的MerchantStore模型相關聯,具有多種M2M和與各種模型的外鍵關係。將django admin暴露給用戶。有害?

繼這個post的解決方案並沒有足夠的時間進行自定義實現後,我決定讓每個Merchant成爲「工作人員」並通過管理界面定製他的商店。我創建了一個具有適當權限的新組。

然而,一些問題出現了:

1)這被認爲是有害嗎?有沒有相關的安全威脅?

2)如果你沒有足夠的時間,這不是最好的方法嗎?

回答

5

不,我不會認爲這是有害的。

Apress的djangobook中描述的「管理員之禪」似乎暗示了作爲管理員「哲學」一部分的信任的假設,並與經常重複的「管理員不是你的應用」的建議配對,我也是一開始就害怕,並認爲Django文檔可能會指出有用的,可行的用例。

請參閱我的幾乎相同的問題Django AdminSite/ModelAdmin for end users?

從喬丹的回答(我是誰給的賞金):

有什麼本質上的特殊 有關admin。它的行爲與任何其他視圖相同。因此,如果正在使用 權限來確定訪問( 例如,如果您設置一個用戶的.is_staff 爲true,但給他們只能 特定權限的訪問),那麼這將是 同樣安全,以你可能 創建的任何視圖使用權限 確定訪問權限。

...

誰寫 django.contrib.admin人民沒有用的假設,任何人 的is_staff =真正可以信任的 多爲超級用戶,或者是愚蠢寫 足以永遠不會查看網頁的 源代碼。儘管 鼓勵編寫自己的觀點,但它仍然是一個強大的界面。

還要注意關於對象列表中查詢字符串參數Django的相對較新的安全更新http://www.djangoproject.com/weblog/2010/dec/22/security/

這樣的更新(引用:「攻擊者可以訪問admin [...]」)清楚地表明管理員對權限系統的實施正在不斷的審查中。

+0

嗯,在是和否之間,後者對我來說更方便! – hymloth 2011-05-22 01:23:43

5

是的,這被認爲是「有害的」,主要是由於Django開發人員的設計考慮。管理員圍繞「可信用戶」的概念展開討論。換句話說,如果有人是一名工作人員(從而可以訪問管理員),他們可能擁有足夠的信任,不會擔心安全漏洞。事實上,你可以阻止他們不應該混淆的部分(就像你已經做的那樣),但問題是Django在這方面沒有任何保證。在所有的實際情況中,你可能不會有任何問題,但你可以可以。具有諷刺意味的是,我想我已經花了更多的時間來定製Django管理員,而不是從頭開始構建它。有趣的是怎麼回事。無論如何,我都會將它比作在Ruby on Rails中使用腳手架。這是一種快速獲得生活的方式,但目標是儘快更換它。

+0

因此,換句話說,一個超級惡意的黑客可能會陷入混亂並對整個系統造成嚴重損害嗎?這在技術上是可能的,而且容易實現?是不是權限系統具體就像linux權限系統? – hymloth 2011-05-21 02:26:27

+0

就「黑客攻擊」而言,確實沒有比管理員通常在最佳條件下更高的風險。真正關心的事情會被意外或忽視暴露給不應該首先看到它的用戶。 Django管理員專爲工作人員設計,是您信任的組織內的人員,並且已授予您特權。超越這個範圍固有地意味着你正在冒險。標準行不允許「普通」用戶訪問管理員。你可以選擇忽略這一點,但你自己承擔風險。 – 2011-05-23 14:14:58