利用django中介軟體CsrfViewMiddleware防止csrf攻擊

來源:互聯網
上載者:User

標籤:否則   判斷   csrf   複雜   bsp   圖片   語句   失效   需要   

一、在django幕後處理

1、將django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般建立的django項目中會內建的。

MIDDLEWARE_CLASSES = [
‘django.middleware.security.SecurityMiddleware‘,
‘django.contrib.sessions.middleware.SessionMiddleware‘,
‘django.middleware.common.CommonMiddleware‘,
‘django.middleware.csrf.CsrfViewMiddleware‘,
‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
‘django.contrib.auth.middleware.SessionAuthenticationMiddleware‘,
‘django.contrib.messages.middleware.MessageMiddleware‘,

這裡中建間的順序可以調整

2、在templete的html頁的from中添加{% csrf %},後台重新導向文法如下:

return render_to_response(xxx.html‘, context_instance=RequestContext(request))

二、前端處理

 對所有的ajax請求加上以下語句:

$(function () {
$.ajaxSetup({
data: {csrfmiddlewaretoken: ‘{{ csrf_token }}‘},
});
})

這樣向背景請求都會帶django產生的那個csrf_token值。中介軟體csrf模組會截取判斷csrf_token值是否一致,如果一致則請求合法。

 

三、對於ajax的複雜物件,例如[{"id":"001","name":"小明"},{"id":"002","name":"小軍"}].,後台post的處理

必須將這種對象轉化為json格式傳到後台,後台在還原序列化即可。(不要用ajax的其他序列化格式,其深度序列化後,django後台解析比較困難)

contentType不需要指定utf-8,否則post解析出錯

四、csrf攻擊與預防

csrf利用session和cookie的時效性進行攻擊。他會擷取請求的cookie,在session時效內進行請求。因此對於重要訊息,重要功能進行單次請求處理。即請求一次失效。

例如:要求標頭中加入驗證token資訊,用完即失效。django的中介軟體csrf_token就是此原理防止的。

五、django中介軟體

這裡簡單說一下django的中介軟體

我們從瀏覽器發出一個請求 Request,得到一個響應後的內容 HttpResponse ,這個請求傳遞到 Django的過程如下:

也就是說,每一個請求都是先通過中介軟體中的 process_request 函數,這個函數返回 None 或者 HttpResponse 對象,如果返回前者,繼續處理其它中介軟體,如果返回一個 HttpResponse,就處理中止,返回到網頁上。

我們可以據此做很多關於網路攻擊的安全防護。比如:攔截器,過濾器,防止xss攻擊 等等。

django中介軟體參考https://code.ziqiangxuetang.com/django/django-middleware.html

利用django中介軟體CsrfViewMiddleware防止csrf攻擊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.