我正在尋找鏈接或答案,以瞭解如何正確配置數據庫權限以保護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. 爲IIS應用程序分配權限
- 2. 給django應用程序根權限?
- 3. 將應用程序權限存儲在數據庫中
- 4. 爲什麼我需要爲asp.net web應用程序創建數據庫權限?
- 5. Django權限應用
- 6. 如何爲sql數據庫設置權限?
- 7. 爲數據庫後端配置django-celery
- 8. 如何爲運行在雲上的應用程序配置外部數據庫
- 9. 如何爲iOS應用程序設置數據庫?
- 10. 將現有的數據庫適配到Django應用程序
- 11. Django應用程序中斷使用Heroku的數據庫設置
- 12. Java應用程序權限
- 13. 如何在將WPF應用程序轉換爲瀏覽器應用程序時配置數據庫
- 14. 如何在django應用程序中使用多個數據庫
- 15. 爲JNLP配置權限:
- 16. 如何使用活動目錄爲Web應用程序分配權限?
- 17. Ruby on Rails:如何在應用程序配置中設置數據庫超時?
- 18. 爲Android Studio應用程序設置不同的用戶權限
- 19. Django的目錄權限配置問題
- 20. C#應用程序配置數據
- 21. 如何將django應用程序登錄到數據庫
- 22. 如何從另一個應用程序訪問django數據庫
- 23. 爲Grails應用程序存儲和使用數據庫中的應用程序配置設置?
- 24. 如何根據用戶使用Django和Python設置權限?
- 25. 配置ADP應用程序以使用不同的數據庫...?
- 26. 數據庫連接在應用程序配置中的作用
- 27. RSpec測試不使用rails應用程序數據庫配置
- 28. 設置Visual Studio數據配置嚮導的SQL數據庫權限
- 29. 是否可以爲用戶設置數據庫行級權限?
- 30. 如何限制快速應用程序中的用戶權限?
謝謝Seth。我也這樣做。但是,我一直在尋找「真正的細節」。我在網絡上看到了一些東西,詳細說明了這一點,看起來很值得加強。遺憾的是我沒有收藏它... – emru 2010-02-24 00:38:37
這不言而喻,但在上述之後:'沖洗特權;' – mlissner 2010-08-14 02:44:24
@mlissner你能解釋爲什麼嗎? – 2012-05-13 23:44:18