CSRF(Cross-site request forgery)跨站请求伪造

django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成。而对于django中设置防跨站请求伪造功能有分为全局和局部。

全局

中间件 django.middleware.csrf.CsrfViewMiddleware

局部

@csrf_protect为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件。

@csrf_exempt取消当前函数防跨站请求伪造功能,即便settings中设置了全局中间件。

应用

Form提交(CSRF)

在表单中加入{% csrf_token %}

csrf.html:

<form action="/csrf.html" method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="username">
<input type="submit" value="form submit">
</form>
Ajax提交(CSRF)

通过Ajax提交表单时需要处理请求头

CSRF请求头: 'X-CSRFToken'

csrf.html:

<form>
<input type="text" name="username" id="username" placeholder="username">
<input type="submit" id="submit" value="ajax submit">
</form>
<script src="/static/jQuery.js"></script>
<script src="/static/jquery.cookie.js"></script>
<script src="/static/csrf.js"></script>

csrf.js:

通过添加 headers

$(function () {
$('#submit').click(function () {
$.ajax({
url: '/csrf.html',
type: 'POST',
data: {'username': $('#username').val()},
headers: {'X-CSRFToken': $.cookie('csrftoken')},
success: function (data) {
alert(data)
}
})
});
});

通过配置 ajax

$(function () {
$.ajaxSetup({
beforeSend: function (xhr, settings) {
xhr.setRequestHeader('X-CSRFToken', $.cookie('csrftoken'))
}
});
$('#submit').click(function () {
$.ajax({
url: '/csrf.html',
type: 'POST',
data: {'username': $('#username').val()},
success: function (data) {
alert(data)
}
})
});
});

Django CSRF的更多相关文章

  1. django csrf 处理简介

    CSRF 是什么 CSRF 即跨站请求伪造,在用户不知情的情况下向有漏洞的网站发送请求.例如有正常网站A,恶意网站B, 用户若对A B 两个网站都有访问,B 可能伪造请求到 A,比如提交表单.至于具体 ...

  2. Django 2.0 学习(22):Django CSRF

    Django CSRF CSRF攻击过程 攻击说明: 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登陆网站A: 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时 ...

  3. django CSRF token missing or incorrect

    django 异步请求时提示403 按照一般情况权限问题,python文件没有问题,仔细看了下response里有一句 CSRF token missing or incorrect.这个肯定是因为安 ...

  4. vue-resource pos提交t数据时碰到Django csrf

    最近在用Vue写前端代码,再用vue-resource向后台提交数据.项目后台是用python+Django开发的.下面我就复盘一下我出现问题的经过. 首先,想用vue进行数据交互只能引入vue-re ...

  5. 30.Django CSRF 中间件

    CSRF 1.概述 CSRF(Cross Site Request Forgery)跨站点伪造请求,举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用 ...

  6. django csrf token添加

    #views.py from django.shortcuts import render_to_response, RequestContext from django.views.decorato ...

  7. 7.Django CSRF 中间件

    CSRF 1.概述 CSRF(Cross Site Request Forgery)跨站点伪造请求,举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果某个用户已经登录到你的网站上了,那么当这个用 ...

  8. pythonのdjango CSRF简单使用

    一.简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功 ...

  9. Python之路-(Django(csrf,中间件,缓存,信号,Model操作,Form操作))

    csrf 中间件 缓存 信号 Model操作 Form操作 csrf: 用 django 有多久,我跟 csrf 这个概念打交道就有久了. 每次初始化一个项目时都能看到 django.middlewa ...

  10. Django CSRF提交遇见的问题

    简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有 ...

随机推荐

  1. 第二章 简单的HTTP协议

    第二章 简单的HTTP协议 针对HTTP协议结构进行讲解 1.通过请求和响应的交换来达成通信目的 应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器端角色. [请求报文]是由请求方法.UR ...

  2. JUnit & JMockit单元测试

    JUnit&JMockit单元测试总结 1.JUnit简介 Java单元测试框架业内应用较多的是JUnit,它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的 ...

  3. Java类加载机制以及双亲委派模型

    一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允 ...

  4. Java连载50-import导入、访问控制权限修饰符

    一.import 1.import语句用来完成导入其他类,同一个包下的类不需要再导入 不在同一个包下需要手动导入. 2.import语法格式 import 类名: import 包名.*; //imp ...

  5. 一文学会 TypeScript 的 82% 常用知识点(上)

    前端专栏 2019-11-22 19:17:55 对于前端从业者来说,TypeScript(以下简称 TS)已经不算是新技术. Vue3 的源码基于 TS 编写, Angular 项目默认支持 TS ...

  6. Android常用adb命令总结(一)

    ADB是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备. ADB是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是an ...

  7. Spring MVC HTTP406 Not Acceptable

    今天在搞前后端分离用springmvc传递json数据的时候,第一步就卡主了,本着完事开头难的做法(哈哈哈), 报了个406?什么鬼? 百度之后发现很多人也同我一样遇到过这个问题,记录下. 找到的处理 ...

  8. python基础(14):生成器、列表推导式

    1. 生成器 什么是⽣成器?⽣成器实质就是迭代器. 在python中有三种⽅式来获取⽣成器: 1. 通过⽣成器函数 2. 通过各种推导式来实现⽣成器 3. 通过数据的转换也可以获取⽣成器 ⾸先,我们先 ...

  9. Python 爬取大众点评 50 页数据,最好吃的成都火锅竟是它!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 胡萝卜酱 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  10. PHP通过session判断防止表单重复提交实例

    PHP通过session判断防止表单重复提交实例,当用户提交表单后,为防止重复操作,通过session来判断是否为初次提交,否则让他返回到之前表单页面. 当前表单页面is_submit设为0 SESS ...