Django框架之CSRF使用篇

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框架又增加了一些了解,在使用上可以更加的灵活。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值