2012-06-21 51 views
-1

在生產中確保django應用程序實例的常見步驟是什麼? 我正在使用sqlite,所以加密數據庫也會很好。在生產中保護django

而且由於數據庫被加密,所以應用程序代碼也應該是加密的或者只編譯的。簡單地刪除所有* py文件並保留* pyc文件是否安全?

此外,是否可以在生產服務器中禁用django shell(./manage.py shell)?一旦外殼可訪問,所有的數據。

我正在使用的堆棧是:Nginx + Gunicorn + Django + SQLite,所有託管在專用防火牆的機架空間專用服務器上。

基本上,目標是,任何具有根訪問權限的人都可能無法訪問數據庫內容。

+2

我永遠不會明白爲什麼人們會問這個問題。誰有能力登錄到你的服務器,無法登錄?什麼會「禁用Django shell」甚至意味着什麼? –

+4

如果有人擁有root用戶訪問權限,遊戲就結束了,你已經失去了。 –

+0

@FredLarson:託管公司沒有root權限嗎? Ergo,託管公司託管的每個站點都可以訪問您的生產服務器。 – TheOne

回答

4

保護django是一個重要的問題,但我認爲你很困惑。

首先,即使您可以讓您的代碼不易檢查,也不會使其更安全。其次,有可能從pyc文件恢復所有評論。

最後,django shell是在命令行中與應用程序交互的一種方便。如果任何未經授權的人能夠運行它,那麼禁用它就沒有關係 - 您的安全性已經完全被破壞了。

我強烈建議您不要使用您當前的知識狀態來管理您自己的生產服務器。使用共享主機,並按照您的託管服務的安全準則。專注於應用程序的實際Web安全性方面。

還有一件事:你沒有在生產中使用內置的服務器嗎?

更新:你無法保護自己的根,即使你可以,他們也可以說,只是把硬盤放入另一臺電腦。

+0

Marcin:請參閱我的問題編輯。 – TheOne

+0

硬盤已加密。 = P – TheOne

+0

@Ramin如果它是加密的,這樣物理訪問將不會幫助攻擊者,那麼計算機無法從中讀取任何內容。如果計算機可以讀取它,那麼任何具有物理訪問權限和root身份的人也可以獲得密鑰。 – Marcin