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. 某网站的videojs的配置及操作

    某网站的videojs的配置及操作 一.总结 一句话总结: 多参照参照别人的例子就好,省事 1.videojs如何获取用户当前视频的位置? this.currentTime() 2.回到视频开始处? ...

  2. m_strcpy

    自己实现strcpy函数 #include <stdio.h> #include <assert.h> //如果它的条件返回错误,则终止程序执行 char *m_strcpy( ...

  3. Ubuntu增加swap交换空间的步骤

    1.首先用命令free查看系统内 Swap 分区大小. free -m total used free shared buffers cached Mem: 2012 1960 51 0 748 95 ...

  4. Selenium常用API的使用java语言之9-模拟键盘操作

    Keys()类提供了键盘上几乎所有按键的方法. 前面了解到, sendKeys()方法可以用来模拟键盘输入, 除此之 外, 我们还可以用它来输入键盘上的按键, 甚至是组合键, 如 Ctrl+A. Ct ...

  5. python定义函数时的参数&调用函数时的传参

    一.定义函数: 1.位置参数:直接定义参数 2.默认参数(或者关键字参数):参数名 = "默认值" 3.位置参数必须在默认参数之前 二.调用函数: 1.按位置传,直接写参数的值 2 ...

  6. HTML 文字剧中

    HTML 内想使文字剧中的办法  就是 text-align:center 剧中前效果图 剧中后效果图 代码:

  7. GitHub中PR(Pull request)操作

    1. 贡献代码: 贡献代码,通俗的说,就是自己修改了代码,希望合并到别人的Repository(仓库)中.将自己的智慧贡献给开源社区.下面将详细讲解步骤 1.1 第一步:fork 在GitHub社区闲 ...

  8. 2019ICPC南京自我反省

    第一场ICPC,跟第一场CCPC一样,可惜真的可惜. 打完比赛就感觉难受,难受不在于又抱了块铜牌,而是那种能出的题没出的可惜感非常浓重. 开场还是可以的,通过一阵讨论,就大胆猜测了A的规律,然后一发过 ...

  9. 斐波那契数列 矩阵乘法优化DP

    斐波那契数列 矩阵乘法优化DP 求\(f(n) \%1000000007​\),\(n\le 10^{18}​\) 矩阵乘法:\(i\times k\)的矩阵\(A\)乘\(k\times j\)的矩 ...

  10. wepy框架滑动组件使用

    https://github.com/dlhandsome/wepy-com-swiper