• csrf认证


    csrf认证

    • django安全令牌机制, 保证浏览器GET请求到服务器的html页面后,POST数据的时候从服务器上GET到的html页面上提交的, 防止不正常的请求

      # django:settings.py
      'django.middleware.csrf.CsrfViewMiddleware' # 认证系统,如果不加,则不进行认证
      
      # django模板渲染: 先进行django模板渲染(render),再返回浏览器
      <form action="" method="post">
          {% csrf_token %}  # post请求加上csrf_token(安全令牌),每次POST请求都会令牌比对, 写在form表单的任意位置
          username: <input type="text" name="username">
          password: <input type="text" name="password">
          <input type="submit">
      </form>
      
      • 浏览器get请求,服务器响应包含post请求的html页面,服务器后端会自动保存一份name=csrfmiddlewaretoken,和value值的数据以备浏览器post认证,浏览器post请求时会加上name和value值,服务器端收到post请求后会比对value值,如果匹配则响应post请求,如果匹配不成功则拒绝响应.
    • csrf_token验证:post

      1. 前端form表单中取隐藏标签属性值放入data中post到后端, contentType: urlencoded 适用

        $.ajax({
        	data:{
        		csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()
        		}
        	})
        
      2. ajaxSetup:django将csrftoken传送到前端,前端post时携带这个值,

        $.ajaxSetup({data:csrfmiddlewaretoken='{{csrf_token}})
        
      3. 发送contenttype类型数据时,通过获取响应返回的cookie中的字符串, 放置在请求头中发送。需要引入一个jquery.cokkie.js插件-----json, form-data适用

        {%load static%}
        <script src="{% static 'js/jquery.cookie.js'%}"></script>
        
        $.ajax{{
        	headers:{"X-CSRFToken":$.cookie("csrftoken")},
        }}
        
  • 相关阅读:
    log4cxx在vs2013的静态编译
    windows下sqlite3静态库和动态库的编译
    iconv gbk字符转utf8字符
    wchar_t与char、wstring与string的相互转换
    获取当前时间并格式化
    快速获取文件大小
    cryptopp开源库的使用(二):base64加密
    cryptopp开源库的使用(零):windows下使用visual studio编译
    cryptopp开源库的使用(一):md5加密
    Docker 安装Oracle
  • 原文地址:https://www.cnblogs.com/relaxlee/p/12842639.html
Copyright © 2020-2023  润新知