Django框架之CSRF使用篇

news/2024/10/24 5:17:49/

Django框架之CSRF使用篇

目录

全局使用

设置csrf token

表单使用

脚本使用

单独豁免

引入csrf类库

设置单独豁免csrf

单独保护

关闭全局csrf

引入csrf库

设置函数保护

csrf token配置

总结


全局使用

Django项目配置中默认全局使用csrf中间件,注释掉即可不再使用,

不过不建议如此这样不安全。

 

设置csrf token

表单使用

在form表单中直接使用csrf token模板标签,在提交时自动csrf验证。

{% csrf_token %}

 

脚本使用

在项目中,很多操作需要ajax来操作提交。

通过查看源代码可看到csrf token标签是在表单中创造了一个名称为csrfmiddlewaretoken(默认情况)的隐藏输入框。

Js获取并设置token

let csrf = $('input[name="csrfmiddlewaretoken"]').val()$.ajax({type: 'POST',url: "/media_list",data: {csrfmiddlewaretoken:csrf},dataType: 'json',success: function (data) {
// 将mp3list赋值给this.songs
this.songs = data.list;
// 调用渲染歌曲列表的方法
this.renderSongList();}.bind(this),error: function (e) {console.log("ERROR : ", e);}});

 

单独豁免

有时候方法不想设置csrf保护,这时候就可以使用csrf装饰器。

引入csrf类库

from django.views.decorators.csrf import csrf_exempt

 

设置单独豁免csrf

使用csrf_exempt来单独豁免此方法不进行csrf验证

@csrf_exempt
def upload_music(request):

单独保护

比较适合,大部分函数方法不需要验证csrf,只有少部分需要验证的情况下。

关闭全局csrf

修改settings.py中中间件处,注释掉csrf中间件。

 

引入csrf库

from django.views.decorators.csrf import csrf_protect

设置函数保护

设置视图中的方法,使用csrf_protect装饰器,来对upload_music方法单独进行csrf验证。

@csrf_protect
def upload_music(request):

csrf token配置

在settings.py 中可对csrf属性设置,可设置属性为:

CSRF_HEADER_NAME = 'HTTP_X_CSRF_AARONTOKEN'
CSRF_COOKIE_SAMESITE = 'Strict'
CSRF_COOKIE_NAME = 'MyCookie'
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_SECURE = False
CSRF_TRUSTED_ORIGINS = []

总结

Csrf验证在项目中对于安全非常重要,通过上述的csrf设置与使用,对django框架又增加了一些了解,在使用上可以更加的灵活。


http://www.ppmy.cn/news/854772.html

相关文章

腾讯十年运维老兵:运维团队的五个“杀手锏”

回顾运维十年,如有一次重来的机会,什么才是最重要的?什么才是团队需要优先做的?才能在未来支撑我们更好的前行。 赵建春 赵建春,腾讯社交网络运营部助理总经理、技术运营通道会长、专家工程师。04年加入腾讯&#xff0…

VimTutor

VimTutor VimTutor-note | Vim on git | Vim-galore | Vim | SpaceVim | Hack SpaceVim 感觉vimtutor是众多vim帮助文档中最好的入门教程,其中的每一个知识点都有相应 的习题,可以让你在短时间内掌握基本的VIM操作。 想要入门vim的童鞋最好还是一边看…

让运维简单高效,Python Vue轻松玩转运维管理平台

随着业务复杂度越来越高,已经没有办法靠人来运维整个平台和业务了。可以试想,如果都需要人工干预完成工作,那得需要投入多少人力?当业务上线时,我们需要部署环境、部署项目;当发生问题时,我们人…

Linux系统运维工程师学习(vim编辑器)

Linux系统运维工程师学习(vim编辑器) Linux文本编辑器介绍 三种模式 A.命令模式(光标移动,字符删除等操作) B.输入模式(insert下写文件内容等操作) C.末行模式(保存退出,…

腾讯运维专家的自我修养

运维同学作为站在研发团队背后的男人们,一直在担任着举重若轻的角色,而这两年盛行的 Devops、研效变革也直接影响到运维同学岗位职责的变化, 云架平技术运维副总监 huashionxu(徐欢) 近十年运维领域的自我修养体会,清晰运维人的工…

智慧军营训练管理系统软件解决方案

智慧军营训练管理系统软件解决方案 营区智慧安防综合管理平台 智慧安防综合管理平台是整个系统的中心,负责对人员、车辆、物资、装备、周界等进行管理,具有最高的管辖范围和管理权限,接入下属所有子系统。 1、综合态势监测 通过业务功能模块化…

码讯化工人员定位系统/支持无线WiFi|UWB定位

产品概述 码讯人员定位管理系统兼容 WiFi 定位、蓝牙定位、UWB 定位,实现人、车、物精确定位,打造可寻、可视、可防、可控的一体化管控。有效实现人员位置管理,具体实现功能有实时监控,轨迹回放、视频联动、电子围栏、巡检管理、电…

运维?运维

前言:为什么今天会谈一谈这个话题呢?其实一开始在思考自己到底是做什么产品或业务的,都是说运维产品,那很多时候并不知道运维是什么,所以就来说下运维是什么。 一大清早就能在菜市场买到新鲜的菜品、鸡鱼肉蛋&#xf…