我正在尋找鏈接或答案,以瞭解如何正確配置數據庫權限以保護Django應用程序?爲了清楚起見,我正在專門討論處理數據庫授權的材料,而不是Django框架本身的權限。如何爲Django應用程序配置數據庫權限?
回答
我通常:
grant all privileges on my_db.* to [email protected] identified by 'my_user_pass'
grant all privileges on test_my_db.* to [email protected] identified by 'my_user_pass'
我想,如果有在Django的錯誤,你可能會打開你的數據庫恢復到可怕的事情,但如果有這麼大的安全你有其他問題django洞。
django最低限度需要選擇,插入,更新和刪除操作。如果你使用測試或syncdb,你還需要能夠創建表和索引(也許是加載sql fixtures的文件權限)。
因此,對於MySQL數據庫,我猜想最佳的一組權限可能是選擇,插入,更新,刪除,創建,索引和文件。如果你想得到真正的實質,你可以有選擇地在表級別(而不是數據庫級別)上授予這些權限。
就我個人而言,我發現grant all ...
更容易打字。
配置數據庫級權限的目的是什麼?如果你的服務器受到攻擊,那麼攻擊者就可以對你的數據庫做任何事情(因爲他有登錄/密碼),而且許可證無濟於事。如果你的服務器是安全的,那麼權限是無用的。
如果您的數據庫服務器可從外部世界獲得,權限可能是有意義的,但這樣做並不是一個好主意。
通過添加數據庫權限,您有機會限制SQL注入等攻擊可以實現的功能。如果Web服務器受到損害,DB權限可能會限制損害 - 例如可能沒有任何理由讓Web應用程序登錄可以刪除數據庫等。 – emru 2010-02-24 21:20:09
使用django可以很容易避免SQL注入,並且在清除所有表和刪除數據庫之間沒有看到很大的區別。無論哪種方式,您都會丟失數據,並在消除漏洞後恢復備份中的任何內容。數據庫級權限使您的項目更安全並不明顯。我認爲django沒有內置的數據庫級權限支持,因爲最好是努力解決實際問題:XSS,CSRF,SQL注入等,而不是用一半的手段騙自己。 – 2010-02-25 03:59:09
這裏是微軟對ASP.NET應用程序的建議「......只授予應用程序必須運行的最低權限。」 和SANS「...這種方法應該只授予應用程序運行所需的最低權限。」 等 缺陷可以在應用程序堆棧中的任何級別 - 爲什麼你不想使用每種可能的工具來防止攻擊傳播。 – emru 2010-02-25 04:27:42
從Django文檔:
https://docs.djangoproject.com/en/dev/topics/install/
「如果你打算使用Django的manage.py執行syncdb命令來自動創建您的模型數據庫表(後首次安裝Django和創建一個項目),你你需要確保Django有權限創建和修改你正在使用的數據庫中的表;如果你打算手動創建這些表,你可以簡單地授予Django SELECT,INSERT,UPDATE和DELETE權限在某些數據庫上,Django將在syncdb期間需要ALTER TABLE特權,但一旦syncdb創建它就不會在表上發出ALTER TABLE語句。創建數據庫後,我們呃具有這些權限,您將在項目的設置文件中指定詳細信息,請參閱DATABASES以獲取詳細信息。「
我剛剛用MySQL測試了初始設置。對於python manage.py migrate
你至少需要簡單的操作如下補助(如果喲使用DB-製劑):
- CREATE,ALTER,INDEX
- SELECT,UPDATE,插圖,DELETE
而且,通過方式 - 安全至關重要。您可以通過限制系統暴露來降低攻擊影響。在這種情況下 - 你可以限制'DROP' - 這是相當大的加。如果你留下一些棘手的漏洞並具備SQL注入的能力 - 你可能會減少損害。我將在未來研究如果它不會損害刪除DELETE關鍵字 - 這也將限制潛在的威脅。只是因爲我們都不時留下錯誤:)
- 1. 如何在Heroku上爲Django應用程序設置數據庫?
- 2. 爲IIS應用程序分配權限
- 3. 給django應用程序根權限?
- 4. 爲Django應用程序配置GAE
- 5. 如何爲Sharepoint在線權限配置Azure Active Directory Web應用程序
- 6. 如何在postgresql中正確配置數據庫權限
- 7. 如何爲php庫存應用程序設置數據庫表
- 8. ASP.NET應用程序訪問數據庫的權限被拒絕
- 9. 將應用程序權限存儲在數據庫中
- 10. 爲什麼我需要爲asp.net web應用程序創建數據庫權限?
- 11. 如何重置數據庫爲特定的應用程序在Django 1.5
- 12. 在Amazon EC2中爲MYSQL數據庫配置Play應用程序
- 13. Django權限應用
- 14. 如何根據數據庫用戶設置文件權限
- 15. 如何爲sql數據庫設置權限?
- 16. 如何爲運行在雲上的應用程序配置外部數據庫
- 17. 爲數據庫後端配置django-celery
- 18. 如何爲Android Studio應用程序設置MySQL數據庫表?
- 19. 如何爲iOS應用程序設置數據庫?
- 20. Plesk爲數據庫用戶分配權限。 「沒有權限」錯誤
- 21. Android 4.3用戶配置文件限制鈦應用程序訪問數據庫
- 22. 將現有的數據庫適配到Django應用程序
- 23. Java應用程序權限
- 24. 應用程序權限
- 25. 應用程序的權限
- 26. Django應用程序中斷使用Heroku的數據庫設置
- 27. 如何在將WPF應用程序轉換爲瀏覽器應用程序時配置數據庫
- 28. 如何在django應用程序中使用多個數據庫
- 29. 如何使用活動目錄爲Web應用程序分配權限?
- 30. 爲JNLP配置權限:
謝謝Seth。我也這樣做。但是,我一直在尋找「真正的細節」。我在網絡上看到了一些東西,詳細說明了這一點,看起來很值得加強。遺憾的是我沒有收藏它... – emru 2010-02-24 00:38:37
這不言而喻,但在上述之後:'沖洗特權;' – mlissner 2010-08-14 02:44:24
@mlissner你能解釋爲什麼嗎? – 2012-05-13 23:44:18