Django middleware 基本應用: 過濾黑名單

參考了幾份程式, 寫法大同小異, 這裡有簡單的 code snippet, 另外 django-ban 大小適中, 不會太複雜而不想看, 又附 sample project 說明怎麼設定, 若沒用過 middleware 的話, 可以參考看看。

概念就是自己寫個 middleware, 加入 settings 裡。middleware 有實作 process_request, 在函式裡檢查 REMOTE_ADDR (我看了好幾份程式都先優先用 HTTP_X_FORWARDED_FOR, 但這樣並不安全), 若在黑名單內, 就傳回 http.HttpResponseForbidden()。感覺這種寫法滿乾淨的。

剛開始一直在找類似 pre-processor 之類的語法, 因為學生時期玩 Rails 1.8 時, 好像有這樣的東西, 就「直覺」地找類似的東西。後來才想到, 這種要擋在全部連線之前的程式, 似乎正好適合寫在 middleware 裡。找對方向後, 就找到一堆東西了。

備註: 找的過程中看到有人用 ipcalc, 計算 ip subnet 的好東西, 之後需要再裝來用。

留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置