1. 程式人生 > >CSRF驗證

CSRF驗證

view 裝飾 middle get csr utils 查詢 spa 後臺

  1. 基本應用

Form 表單中添加{% csrf_token %}

可以通過查詢網頁元素得到它的name值和value值

  1. 全站禁用

# ‘django.middleware.csrf.Csrf……’,在settings中註釋該行,表示不要進行csrf驗證

  1. 局部禁用

‘django.middleware.csrf.Csrf……’,在settings中註釋該行

From django.views.decorators.csrf import csrf_exempt

@csrf_exempt

def csrf1(request):

if request.method==’GET’:

return render(request,’csrf1.html’)

else:return HttpResponse(‘ok’)

給csrf1()一個裝飾器csrf_exempt,作用是讓csrf1()不要進行csrf驗證

  1. 局部使用

# ‘django.middleware.csrf.Csrf……’,在settings中註釋該行

From django.views.decorators.csrf import csrf_exempt,csrf_protect

@csrf_protect

def csrf1(request):

if request.method==’GET’:

return render(request,’csrf1.html’)

else:return HttpResponse(‘ok’)

給csrf1()一個裝飾器csrf_protect,作用是讓csrf1()要進行csrf驗證

2. 特殊CBV

from django.views import View

from django.utils.decorators import method_decorato

@method_decorator(csrf_protect,name=‘dispatch‘)

class Foo(View):

def get(self,request):

pass

def post(self,request):

pass

在form表單中進行提交時,後臺會自動進行csrf的驗證,即沒有註釋‘django.middleware.csrf.Csrf……’它,就必須在

form表單中添加{%csrf_token%}

CSRF驗證