詳解利用django中間件django.middleware.csrf.CsrfViewMiddleware防止csrf攻擊
一、在django后臺(tái)處理
1、將django的setting中的加入django.contrib.messages.middleware.MessageMiddleware,一般新建的django項(xiàng)目中會(huì)自帶的。
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頁(yè)的from中添加{% csrf %},后臺(tái)重定向語(yǔ)法如下:
return render_to_response(xxx.html', context_instance=RequestContext(request))
二、前端處理
對(duì)所有的ajax請(qǐng)求加上以下語(yǔ)句:
$(function () { $.ajaxSetup({ data: {csrfmiddlewaretoken: '{{ csrf_token }}'}, }); })
這樣向后臺(tái)的請(qǐng)求都會(huì)帶django生成的那個(gè)csrf_token值。中間件csrf模塊會(huì)截取判斷csrf_token值是否一致,如果一致則請(qǐng)求合法。
三、對(duì)于ajax的復(fù)雜對(duì)象,例如[{"id":"001","name":"小明"},{"id":"002","name":"小軍"}].,后臺(tái)post的處理
必須將這種對(duì)象轉(zhuǎn)化為json格式傳到后臺(tái),后臺(tái)在反序列化即可。(不要用ajax的其他序列化格式,其深度序列化后,django后臺(tái)解析比較困難)
contentType不需要指定utf-8,否則post解析出錯(cuò)
四、csrf攻擊與預(yù)防
csrf利用session和cookie的時(shí)效性進(jìn)行攻擊。他會(huì)獲取請(qǐng)求的cookie,在session時(shí)效內(nèi)進(jìn)行請(qǐng)求。因此對(duì)于重要信息,重要功能進(jìn)行單次請(qǐng)求處理。即請(qǐng)求一次失效。
例如:請(qǐng)求頭中加入驗(yàn)證token信息,用完即失效。django的中間件csrf_token就是此原理防止的。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python3利用venv配置虛擬環(huán)境及過(guò)程中的小問(wèn)題小結(jié)
這篇文章主要介紹了python3利用venv配置虛擬環(huán)境及過(guò)程中的小問(wèn)題小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08python數(shù)據(jù)可視化plt庫(kù)實(shí)例詳解
這篇文章主要介紹了python可視化數(shù)據(jù)plt庫(kù)實(shí)例,下面使用pycharm環(huán)境給大家詳細(xì)介紹,文中提到j(luò)upyter和pycharm環(huán)境的差別,需要的朋友可以參考下2021-06-06python基礎(chǔ)教程之分支、循環(huán)簡(jiǎn)單用法
這篇文章主要介紹了python基礎(chǔ)教程之分支、循環(huán)簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了Python分支及循環(huán)語(yǔ)句的簡(jiǎn)單使用方法,需要的朋友可以參考下2016-06-06淺談TensorFlow中讀取圖像數(shù)據(jù)的三種方式
這篇文章主要介紹了淺談TensorFlow中讀取圖像數(shù)據(jù)的三種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06python 畫(huà)函數(shù)曲線(xiàn)示例
今天小編就為大家分享一篇python 畫(huà)函數(shù)曲線(xiàn)示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12