zoukankan      html  css  js  c++  java
  • 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")},
        }}
        
  • 相关阅读:
    算法学习之基础(背包 列队 栈) 习题1.3.9 补全括号
    LVS负载均衡DR模式部署
    SQL更改表架构
    BCP导入导出MsSql
    E. Holes(分块)
    hdu6230 Palindrome(manacher+树状数组)
    Suffix(hash+lcp+二分)
    k近邻法( k-nearnest neighbor)
    《机器学习》第三章——LDA
    《机器学习》第三章——对率回归
  • 原文地址:https://www.cnblogs.com/relaxlee/p/12842639.html
Copyright © 2011-2022 走看看