csrf解決方法,配置csrf_Django 啟用和禁用CSRF功能

 2023-11-19 阅读 31 评论 0

摘要:1.Django CSRF的原理CSRF(Cross Site Request Forgery)也就是跨站請求偽造,實現的原理是CSRF攻擊者在用戶已經登錄目標網站之后,誘使用戶訪問一個攻擊頁面,利用目標網站對用戶的信任,以用戶身份在攻擊頁面對目標網站發起偽造用戶操作的請求࿰

1.Django CSRF的原理

CSRF(Cross Site Request Forgery)也就是跨站請求偽造,實現的原理是CSRF攻擊者在用戶已經登錄目標網站之后,誘使用戶訪問一個攻擊頁面,利用目標網站對用戶的信任,以用戶身份在攻擊頁面對目標網站發起偽造用戶操作的請求,達到攻擊目的;

2.CSRF認證

  • 在項目的settings文件中有一個配置項MIDDLEWARE,表示默認Django啟用csrf認證;
'django.middleware.csrf.CsrfViewMiddleware'
  • 當頁面為form表單提交時,一般都需要在form標簽中加上{% csrf_token %},如果第一次表單提交的時候帶上了csrf_token ,服務器端就會認為這個是可信任的用戶,所以如果第二次提交時form表單去掉csrf_token,但是瀏覽器請求時會帶上之前表單第一次提交時中的csrf_token ,服務器端默認信任這個csrf_token ;
{# #} {% csrf_token %}
  • 如果在settings文件中將csrf的中間件注釋,那么form表單提交,將不再需要csrf token認證;

3.CSRF局部禁用

  • 為了避免沒有csrf token而產生的403的forbidden錯誤問題,通常使用django.views.decorators.csrf.csrf_exempt裝飾器來修飾這個處理POST請求的View, 這種方式是CSRF局部禁用;
from django.views.generic import Viewfrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_exemptclass 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 Viewfrom django.utils.decorators import method_decoratorfrom django.views.decorators.csrf import csrf_protectclass CSRFTestView(View): @method_decorator(csrf_protect) def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) def post(self, request): pass
  • 如果需要禁用Django CSRF功能項目都是啟用全局的CSRF中間件,針對局部的View進行禁用;

4.Postman

csrf解決方法。Postman是一種網頁調試與發送網頁http請求的chrome插件,可以用來很方便的模擬get、post、put、patch、delete、copy等多種方式的請求來調試接口;

postman可用作macOS,Windows和Linux操作系統的本機應用程序。Windows系統下安裝postman只需要下載安裝文件,然后運行安裝程序就可以了;

d36e07d8276fe9800202f6b3cb0dc1bf.png

Postman

vue csrf、Postman的下載地址:https://www.getpostman.com/downloads/

參考:https://www.9xkd.com/user/plan-view.html?id=1091380484

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/182437.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息