Csrf

csrf中间件

  csrf跨站请求伪造

  Django框架中请求伪造保护机制

装饰器

from django.views.decorators.csrf import csrf_exempt,csrf_protect
  • csrf_exempt 加在视图上,表示当前视图不进行csrf校验
  • csrf_protect 加在视图上,表示当前视图进行csrf校验

注意点:

CBV情况,csrf_exempt装饰器要加在dispatch上

  • process_request(self, request):

    从cookie中获取csrftoken的值 —— 》 request.META['CSRF_COOKIE']

  • process_view:
  1. 判断视图是否加上csrf_exempt,
    1. 有就不在进行csrf校验
    2. 没有继续进行校验
  1. 判断请求方式是'GET', 'HEAD', 'OPTIONS', 'TRACE',
    1. 是的话,不进行校验
    2. 不是的话,进行校验

   3.进行校验的:

1、

csrf_token = request.META.get('CSRF_COOKIE')   #  csrf_token = cookie中获取csrftoken的值

2、

先尝试从request.POST获取csrfmiddlewaretoken对应的值
request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')  # 获取隐藏标签的csrfmiddlewaretoken对应的值
再尝试从请求头中获取X-csrftoken的值
request_csrf_token = request.META.get(settings.CSRF_HEADER_NAME, '')

3、拿csrf_token和request_csrf_token 进行对比

  1. 对比成功,校验成功

  2. 对比不成功,校验失败,拒绝

 

转载于:https://www.cnblogs.com/xinjie123/p/10962584.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值