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