Django框架(26.Django中的CSRF以及登录装饰器)
CSRF簡介
CSRF全拼為Cross Site Request Forgery,譯為跨站請求偽造。CSRF指攻擊者盜用了你的身份,以你的名義發(fā)送惡意請求。CSRF能夠做的事情包括:以你名義發(fā)送郵件,發(fā)消息,盜取你的賬號,甚至于購買商品,虛擬貨幣轉(zhuǎn)賬......造成的問題包括:個人隱私泄露以及財產(chǎn)安全。
CSRF示意圖如下:
?
如果想防止CSRF,首先是重要的信息傳遞都采用POST方式而不是GET方式,接下來就說POST請求的攻擊方式以及在Django中的避免。
?防止CSRF
1.Django提供了csrf中間件用于防止CSRF攻擊,只需要在test4/settings.py中啟用csrf中間件即可。
2.也可以在from表單后添加 {% csrf_token %}? ,也是可以防止csrf攻擊的
?保護原理
實際是在from表單的后面會生成一傳value屬性的值,一段字符串
說明:當(dāng)啟用中間件并加入標(biāo)簽csrf_token后,會向客戶端瀏覽器中寫入一條Cookie信息,這條信息的值與隱藏域input元素的value屬性是一致的,提交到服務(wù)器后會先由csrf中間件進(jìn)行驗證,如果對比失敗則返回403頁面,而不會進(jìn)行后續(xù)的處理。
登錄裝飾器
def login_required(view_func):'''登錄判斷裝飾器'''# view_args位置參數(shù)(接收位置參數(shù)),view_kwargs關(guān)鍵字參數(shù)(接收關(guān)鍵字參數(shù))def wrapper(request,*view_args,**view_kwargs):# 判斷用戶是否登錄if request.session.has_key("islogin"):# 用戶已登錄view_func(request,*view_args,**view_kwargs)else:# 用戶未登錄return redirect("/login") # 跳轉(zhuǎn)到登錄視圖函數(shù)return wrapper用的時候可以直接給視圖函數(shù)直接? 使用? @login_required
?
總結(jié)
以上是生活随笔為你收集整理的Django框架(26.Django中的CSRF以及登录装饰器)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django2中使用xadmin
- 下一篇: 常用字符与ASCII代码对照表