cookie和session-csrf防护-中间件
cookie概念: 是由服务器生成,保存在浏览器端的一小段文本信息。
cookie特点:
1) cookie是以键值对进行存储的。
2) 浏览器访问网站时,会将本地保存的跟网站相关的所有cookie发送给网站的服务器。
3) cookie是基于域名安全的。
4) cookie是有过期时间的,默认关闭浏览器之后过期。设置cookie: set_cookie(key, value, max_age='过期时间')。读取cookie: request.COOKIES(保存浏览器发过来的cookie信息)删除cookie. delete_cookie(key)
session概念: 保存在服务器端的文本信息,默认保存在服务器端的django_session表中。
sesssion特点:
1) session也是以键值对进行存储的。
2) session依赖于cookie, session信息对应的唯一标识默认保存在sessionidcookie中。
3) session是有过期时间的,默认两周之后过期。
设置session: request.session['键']='值'
获取session: 变量 = request.session['键']
删除session: request.session.flush()
设置session的过期时间: request.session.set_expire('秒数')
扩展:
1) django_session表中是由INSTALLED_APPS中的'django.contrib.sessions'应用生成的。
2) session的存储需要借助于MIDDLEWARE_CLASSES中的
'django.contrib.sessions.middleware.SessionMiddleware'中间件。
3) 可以通过SESSION_ENGINE配置session存储在什么地方。
csrf跨站请求伪造:
如果用户登录了网站,并且未退出, 点击了伪造链接,浏览器就会以登录用户的身份去访问A网站,可能会造成密码的的修改和财产的损失等,这就是csrf请求伪造(跨站请求伪造)。
Django框架针对post提交数据具有csrf的防护验证,如果需要使用Django的csrf防护,
需要按以下步骤:
1) 打开Django配置文件中的csrf防护中间件。2)在使用表单post提交时,需要在表单中加上{ % csrf_token % }标签。
如果是ajax post请时,也需要在页面上加上{ % csrf_token % }标签。
防御原理:
1) 访问页面时,django会把{ % csrf_token % }标签替换为一个名为csrfmiddlewaretoken的隐藏域。
2)同时django网站会让浏览器保存一个名为csrftoken的cookie信息。
3)在进行表单提交或者ajax post提交时,csrfmiddlewaretoken隐藏域的值和crsftoken cookie的值
都会被提交给服务器,django框架中的csrf防护中间件会对这两个值进行对比,如果一致,则csrf验
正通过,可以进行后续操作,否则出现403错误。
中间件流程
request对像产生: 请求到达Django框架内部时,Django框架会把请求报文中的请求信息封装在request对象的属性中
===>依次从上到下调用MIDDLEWARE_CLASSES注册中间件类中的process_request函数
===>
根据请求的url地址进行匹配
===>依次从上到下调用MIDDLEWARE_CLASSES注册中间件类中的process_view函数
===>
调用视图函数
===>依次从下到上调用MIDDLEWARE_CLASSES注册中间件类中的process_view函数

cookie和session-csrf防护-中间件的更多相关文章
- Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)
12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...
- Django(六)Session、CSRF、中间件
大纲 二.session 1.session与cookie对比 2.session基本原理及流程 3.session服务器操作(获取值.设置值.清空值) 4.session通用配置(在配置文件中) 5 ...
- Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)
通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...
- Django之Form、CSRF、cookie和session
Django是一个大而全的web框架,为我们提供了很多实用的功能,本文主要介绍Form.CSRF.cookie和session 一.Form 在web页面中form表单是重要的组成部分,为了数据安全和 ...
- python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)
python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
- Django之Cookie、Session、CSRF、Admin
Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get ...
- cookie 和 session 的一些事 中间件
cookie 和 session cookie 1. 保存在浏览器上一组组键值对,服务器让浏览器进行设置. 2. 为什么要用cookie? HTTP协议是无状态.使用cookie保存状态. 3. dj ...
- Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据
路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...
随机推荐
- JavaScript(ES6之前)数组方法总结
一.数组的创建 1.使用 Array 构造函数 var arr1 = new Array(); // 创建一个空数组 var arr2 = new Array(20); // 创建一个包含20项的数组 ...
- IoC与DI的理解
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/b ...
- C# 中自定义配置
微软在ConfigurationManager类里面为我们提供了AppSetting和ConnectionStrings 两个常用配置, 但是有时候我们需要自定的配置,例如 <image lef ...
- DT6.0二次最后一次开发插件-手机端熊掌号定时提交
今天写完这个,就是DT6.0最后开放的插件,因为群里的朋友需要,就写了一个适合DT6的手机端定时插件.不过个人还是喜欢7.0的版本,7.0的插件在上几期分享了,今天就不过多说了! 我这个是初成品,改善 ...
- 2.3 vue配置(上)
rm,在打包之前把上一次打包之后的东西删掉,然后webpack重新打包 通过DefinePlugin形成一个环境变量 HTML打包插件
- 用于异步事件驱动的 P 语言 P Language
微软最近开源了P语言,致力于在Linux.macOS和Windows上编写安全的异步事件驱动程序. 微软将P描述为一种领域特定语言,对异步系统的组件间通信进行建模,例如嵌入式.网络或分布式系统.P程序 ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player——概率&&期望
题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...
- 论文笔记-Deep Affinity Network for Multiple Object Tracking
作者: ShijieSun, Naveed Akhtar, HuanShengSong, Ajmal Mian, Mubarak Shah 来源: arXiv:1810.11780v1 项目:http ...
- SQL SERVER PIVOT使用
参照这个网址介绍 http://www.cnblogs.com/lwhkdash/archive/2012/06/26/2562979.html 一般SQL Server的函数都会识别为紫色,可是PI ...
- jQuery相关方法7----各种事件和绑定事件
一.jQuery事件 1.鼠标事件 click与dbclick事件 click事件其实是由mousedown与mouseup 2个动作构成,所以点击的动作只有在松手后才触发 $ele.click(): ...