如何提高Django Admin的安全性?


Django是一個流行的Web框架,以其易用性而聞名。像許多其他Web框架一樣,Django配備了許多功能,無需編寫大量程式碼即可使用。Django-admin就是其中一項功能。

自動管理介面是Django最強大的功能之一。它讀取模型的元資料,為可信使用者建立以模型為中心的介面,以便管理網站上的內容。建議將管理員的使用限制在組織的內部管理工具中。它並非旨在作為完整前端的基礎。

管理員提供了許多修改掛鉤,但不要完全依賴它們。如果您需要提供更以流程為中心的介面,該介面可以隱藏資料庫表和欄位的實現細節,那麼可能是時候開發您自己的檢視了。

下面討論了一些確保Django專案安全的技巧。

使用安全套接字層 (SSL)

在HTTPS上部署您的專案非常重要。如果沒有,當您在公共場所時,其他人可能會從您的Web應用程式收集資料。

將預設的admin URL從/admin/更改為其他名稱。如有需要,可在不同的域名中託管admin。

更改上述域名,如下所示。

urlpatterns=[
   path(‘/admin/’, admin.site,urls),
]

將上述URL更改為不常見且不易訪問或識別的名稱。

Urlpatterns=[
   path(‘my-special-tts-admin’, admin.site,urls),
]

使用雙因素身份驗證

當您要求密碼加其他內容來驗證網站使用者的身份時,您就在使用雙因素身份驗證 (2FA)。需要密碼然後向您傳送第二個登入程式碼才能登入的應用程式可能正在使用雙因素身份驗證 (2FA)。

您可以透過三種方式在您的網站上啟用2FA:

  • 透過簡訊進行2FA,這需要傳送登入程式碼。雖然這比僅僅需要密碼更好,但簡訊很容易被攔截。

  • 透過Google Authenticator之類的應用程式進行雙因素身份驗證,該應用程式會為您註冊的任何服務生成唯一的登入程式碼。使用者需要掃描您網站上的二維碼才能將其註冊到這些應用程式中。然後,該應用程式將生成一個登入程式碼,他們可以使用該程式碼訪問您的網站。

  • 使用YubiKey在您的網站上啟用2FA是最安全的選擇。當您的使用者嘗試登入時,他們必須擁有一個物理裝置(例如YubiKey),他們必須將其插入USB埠。

可以使用**django-two-factor-auth**模組啟用上述任何2FA技術。

  • 務必強調需要更強的密碼,並確保為管理員頁面/站點維護更強的密碼。

  • 務必安裝django-admin-honeypot。

  • 如果您已將其遷移到新的URL甚至選擇在其自己的域名上託管它,請在舊的/admim/URL上安裝django-admin-honeypot庫,以收集嘗試入侵您網站的企圖。

  • 當有人嘗試登入到您之前的/admin/URL時,django-admin-honeypot會生成一個虛假的管理員登入螢幕並向您的網站管理員傳送電子郵件。

  • django-admin-honeypot生成的電子郵件中將包含攻擊者的IP地址,因此,如果您檢測到來自同一IP地址的重複登入嘗試,您可以限制該地址使用您的網站以提高安全性。

  • 始終確保使用最新版本的Django,因為它包含安全升級和錯誤修復。

  • 記住您所處的環境和正在使用的環境,可以讓您瞭解生產資料的任何變化。

更新於:2022年9月2日

430 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告