在Django中預防CSRF攻擊的操作
阿新 • • 發佈:2020-03-15
CSRF全拼為Cross Site Request Forgery,譯為跨站請求偽造。
CSRF指攻擊者盜用了你的身份,以你的名義傳送惡意請求。
( 包括:以你名義傳送郵件,發訊息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬…)
造成的問題:個人隱私洩露以及財產安全。
CSRF攻擊示意圖
客戶端訪問伺服器時沒有同伺服器做安全驗證
防止 CSRF 攻擊
步驟:
1. 在客戶端向後端請求介面資料的時候,後端會往響應中的 cookie 中設定 csrf_token 的值
2. 在 Form 表單中新增一個隱藏的的欄位,值也是 csrf_token
3. 在使用者點選提交的時候,會帶上這兩個值向後臺發起請求
4. 後端接受到請求,會做以下幾件事件:
4.1 從 cookie中取出 csrf_token
4.2 從 表單資料中取出來隱藏的 csrf_token 的值
4.3 進行對比
5. 如果比較兩個值(經過演算法運算得出的結果)是一樣,那麼代表是正常的請求,如果沒取到或者比較不一樣,代表不是正常的請求,不執行下一步操作
CSRF_TOKEN的設定過程
建立檢視類
新增路由
新增表單
在form裡新增語句
<form method="post" action="/tpl/csrf"> {{ csrf_input }} <p> <label for="fave">Fruit: <input id="fave" name="fave" /></label> </p> <p> <label for="name">Name: <input id="name" name="name" /></label> </p> <button>提交</button> </form>
補充知識:Django實現url跳轉(重定向)
編輯urls.py檔案如下:
from django.urls import path,include from django.views.generic import RedirectView urlpatterns = [ path('polls/',include('polls.urls')),path('',RedirectView.as_view(url='polls/')),]
即表示將xxx.com跳轉到xxx.com/polls/。
以上這篇在Django中預防CSRF攻擊的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。