zoukankan      html  css  js  c++  java
  • 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. 对比不成功,校验失败,拒绝

  • 相关阅读:
    Windows快捷键大全
    Windows快捷键大全
    长尾理论
    长尾理论
    长尾理论
    Windows快捷键大全
    Windows快捷键大全
    Windows快捷键大全
    长尾理论
    e2eCapWDM Video Capture 服务启动失败解决方法
  • 原文地址:https://www.cnblogs.com/xinjie123/p/10962584.html
Copyright © 2011-2022 走看看