Django CSRF跨站请求伪造的禁用和使用

简介: Django CSRF跨站请求伪造的禁用和使用

CSRF (Cross-site request forgery)


Django后台设置

全局和局部设置

# 全站使用
  'django.middleware.csrf.CsrfViewMiddleware',
# 局部禁用
    from django.views.decorators.csrf import csrf_exempt
    @csrf_exempt
    def csrf_demo(request):
        if request.method == 'POST':
          return HttpResponse('POST OK')
# 全站禁用
    # 'django.middleware.csrf.CsrfViewMiddleware',
# 局部使用  
    from django.views.decorators.csrf import csrf_protect
    @csrf_protect
     def csrf_demo(request):
        if request.method == 'POST':
          return HttpResponse('POST OK')

前端使用

Form表单中使用

Ajax请求使用


获取:Form表单 或 cookie
使用:data数据 或 headers
<!-- Form表单中使用 -->
<form method="POST" action="/csrf_demo.html">
    {% csrf_token %}
    <input id="user" type="text" name="user" />
    <input type="submit" value="提交"/>
</form>
<!-- Ajax中使用 -->
<script>
    function submitForm(){
      // 从form 表单中获取
        var token = $('input[name="csrfmiddlewaretoken"]').val();
  // 从cookie 中获取
        // var token = $.cookie('csrftoken');
        var user = $('#user').val();
        $.ajax({
            url: '/csrf_demo.html',
            type: 'POST',
            // data 数据中使用
            data: { 
              "user":user,
              'csrfmiddlewaretoken': token
            },
            // headers 中使用
            // headers:{'X-CSRFToken': token},
            success:function(arg){
                // do something
            }
        })
    }
</script>
相关文章
|
2月前
|
SQL 存储 安全
Web安全-CSRF跨站请求伪造
Web安全-CSRF跨站请求伪造
66 5
|
3月前
|
存储 前端开发 Serverless
中后台前端开发问题之Django项目中接收和处理用户的抽奖请求如何解决
中后台前端开发问题之Django项目中接收和处理用户的抽奖请求如何解决
17 0
|
5月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
5月前
|
JSON 缓存 前端开发
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
Django视图层探索:GET/POST请求处理、参数传递与响应方式详解
|
5月前
|
前端开发 JavaScript 安全
跨域问题与Django解决方案:深入解析跨域原理、请求处理与CSRF防护
跨域问题与Django解决方案:深入解析跨域原理、请求处理与CSRF防护
|
5月前
|
JSON 前端开发 JavaScript
Django——Ajax请求
Django——Ajax请求
|
中间件 数据库 Python
Django-请求生命周期
Django-请求生命周期
97 0
|
API 网络架构 Python
源码剖析Django REST framework的请求生命周期
学习Django的时候知道,在Django请求的生命周期中,请求经过WSGI和中间件到达路由,不管是FBV还是CBV都会先执行View视图函数中的dispatch方法 REST framework是基于Django的API框架,REST framework采用的是CBV的请求模式.
1291 0
|
Python 数据库 中间件
Django中请求的生命周期
1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中. Django的请求生命周期是指当用户在浏览器上输入url到用户看到网页的这个时间段内,Django后台所发生的事情 而Django的生命周期内到底发生了什么呢?? 1.
1237 0