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. 对比不成功,校验失败,拒绝

  • 相关阅读:
    mysql创建用户后无法访问数据库的问题
    mysql索引
    hadoop安装
    MySQL工作原理
    MySQL数据库优化的八种方式
    FLOAT 和 DOUBLE区别
    在C++中定义常量
    C++变量类型
    FTP主动模式、被动模式(转)
    FtpClient ReplyCode 意义及 FtpClientHelper辅助类
  • 原文地址:https://www.cnblogs.com/xinjie123/p/10962584.html
Copyright © 2011-2022 走看看