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防护-中间件的更多相关文章

  1. Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)

    12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...

  2. Django(六)Session、CSRF、中间件

    大纲 二.session 1.session与cookie对比 2.session基本原理及流程 3.session服务器操作(获取值.设置值.清空值) 4.session通用配置(在配置文件中) 5 ...

  3. Django实现表单验证、CSRF、cookie和session、缓存、数据库多表操作(双下划綫)

    通常验证用户输入是否合法的话,是前端js和后端共同验证的,这是因为前端js是可以被禁用的,假如被禁用了,那就没法用js实现验证合法与否了,也就是即使用户输入的不合法,但是也没提示,用户也不知道怎么输入 ...

  4. Django之Form、CSRF、cookie和session

    Django是一个大而全的web框架,为我们提供了很多实用的功能,本文主要介绍Form.CSRF.cookie和session 一.Form 在web页面中form表单是重要的组成部分,为了数据安全和 ...

  5. python_way day19 HTML-day5 (form表单验证,CSRF,cookie,session,缓存)

    python-way day19 1. dJango的form表单验证 2.CSRF 跨站请求伪造 3.cookie,session 4.缓存 一,django表单验证功能 1.django验证基础: ...

  6. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

  7. Django之Cookie、Session、CSRF、Admin

    Django之Cookie.Session.CSRF.Admin   Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get ...

  8. cookie 和 session 的一些事 中间件

    cookie 和 session cookie 1. 保存在浏览器上一组组键值对,服务器让浏览器进行设置. 2. 为什么要用cookie? HTTP协议是无状态.使用cookie保存状态. 3. dj ...

  9. Django进阶(路由系统、中间件、缓存、Cookie和Session、Ajax发送数据

    路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P&l ...

随机推荐

  1. k8s的组件

    1.Master组件 1.API Server K8S对外的唯一接口,提供HTTP/HTTPS RESTful API,即kubernetes API.所有的请求都需要经过这个接口进行通信.主要负责接 ...

  2. MySQL服务器2

    1.sql的基本语法 对数据库 create database db1; 创建数据库 对表: create database t1(id int,name char(10)); 创建表 show cr ...

  3. 【恐怖的数组模拟】Secret Poems - HihoCoder - 1632

    Secret Poems - HihoCoder - 1632 图一 图二 Following the order indicated by arrows, you can get “THISISAV ...

  4. 《hello--world团队》第五次作业:项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验九 团队作业5-团队项目需求改进与系统设计 团队名称 <hello--worl ...

  5. ASP.NET六大巨头——内置对象(2)

    前面讲了三个内置对象,后面来探究一下另外三个内置对象Session.Server和Cookie,Session对象就是服务器给客户端的一个编号:Server对象提供对服务器上的方法和属性的访问:coo ...

  6. 【原创】改进的大马webshell,过市面上任何防护

    因为之前使用的webshell大马很多都没用了,都被安全防护拦截了,所以通过几个大牛的指点和网上的教程整理而成自己做的增强版的webshell大马,我这个是源码,部分无加密! <?php $pa ...

  7. 7月新的开始 - Axure学习03 - 布尔运算、表单元件

    布尔运算 布尔运算:是一种数字符号化的逻辑推演法.包含联合.相交.相减等 在图形处理中,通过联合.相交.相减等操作使基本的图形组合产生新的形体 操作 准备 蓝色(底部).绿色(顶部) 合并:两个图形合 ...

  8. celery 笔记

    参考:https://blog.csdn.net/tichimi3375/article/details/82415412 中文翻译:https://www.celerycn.io/      htt ...

  9. 分布式系统:CAP理论

    无论你是一个系统架构师,还是一个普通开发,当你开发或者设计一个分布式系统的时候,CAP理论是无论如何也绕不过去的.本文就来介绍一下到底什么是CAP理论,如何证明CAP理论,以及CAP的权衡问题. CA ...

  10. HTML 008 head

    HTML <head> 查看在线实例 <title> - 定义了HTML文档的标题使用 <title> 标签定义HTML文档的标题 <base> - 定 ...