CSRF(Cross Site Request Forgery)也就是跨站請求僞造,實現的原理是CSRF攻擊者在用戶已經登陸目標網站以後,誘使用戶訪問一個攻擊頁面,利用目標網站對用戶的信任,以用戶身份在攻擊頁面對目標網站發起僞造用戶操做的請求,達到攻擊目的;html
'django.middleware.csrf.CsrfViewMiddleware'
{% csrf_token %}
,若是第一次表單提交的時候帶上了csrf_token
,服務器端就會認爲這個是可信任的用戶,因此若是第二次提交時form表單去掉csrf_token
,可是瀏覽器請求時會帶上以前表單第一次提交時中的csrf_token
,服務器端默認信任這個csrf_token
;<form action="{% url 'users:image' %}" method="post" enctype="multipart/form-data"> {# <input type="file" name="upload" accept="image/gif, image/jpeg, image/png, image/jpg">#} <input type="file" name="upload"> <input type="submit" value="提交"> {% csrf_token %} </form>
django.views.decorators.csrf.csrf_exempt
裝飾器來修飾這個處理POST請求的View, 這種方式是CSRF局部禁用;from django.views.generic import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_exempt class CSRFTestView(View): @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def post(self, request): pass
csrf_protect
,須要先在settings文件註釋CsrfViewMiddleware
;from django.views.generic import View from django.utils.decorators import method_decorator from django.views.decorators.csrf import csrf_protect class CSRFTestView(View): @method_decorator(csrf_protect) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def post(self, request): pass
Postman是一種網頁調試與發送網頁http請求的chrome插件,能夠用來很方便的模擬get、post、put、patch、delete、copy等多種方式的請求來調試接口;
postman可用做macOS,Windows和Linux操做系統的本機應用程序。Windows系統下安裝postman只須要下載安裝文件,而後運行安裝程序就能夠了;chrome
Postman的下載地址:https://www.getpostman.com/downloads/django
參考:https://www.9xkd.com/user/plan-view.html?id=1091380484瀏覽器