django中cookie和session的理解

django中session与cookie的概念    

HTTP无状态性:(HTTP协议不具备保存之前发送过的请求或响应的功能)
协议对于事务处理没有记忆能力对同一个url请求没有上下文关系每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器
如果说没有一种机制用来处理无状态,那么就需要花费时间不停的进行身份验证,正是这样,HTTP引入了session和cookie,既保持了http的无状态性,也使得http的应用称为有状态的。


cookie和session
session和cookie都是缓存,其存在的目的都是为了减少用户request和reponse之间的时间耗损,提高用户的浏览体验。

cookies是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。cookie大致上分为两种,分别是会话cookie和持久化cookie。

session是存储在服务端的,获取方式:通过cookie里的session id(通过服务器生成)获取,而session是存放在服务器的内存中的,所以session的数据不断增加会造成服务器的负担,所以只会把很重要的信息存储在session中,而把一些次要的东西存储在客户端的cookie中。会话cookie是存放在客户端浏览器的内存中,他的生命周期和浏览器是一致的,当浏览器关闭会话cookie也就消失了,而持久化cookie是存放在客户端硬盘中,持久化cookie的生命周期是我们在设置cookie时候设置的那个保存时间。

session id的作用

当客户端第一次请求session时,服务器端会为客户端创建一个session对象,并且生成一个session id(通过一些加密算法)。然后保存在cookie中。当用户再次登录时,客户端通过cookie,将session id传到服务器,去和服务器中的session id进行对比,寻找这个session 。然后根据查找结果执行对应的操作。

登录过程


id被盗可能导致的问题                                                                                      

因为session Id是保存在cookie中,而cookie是存在于客户端,所以session Id 并不安全

如何避免

1.敏感操作需要用户输入密码来进行二次认证

2.网站https化,提高消息传递过程中的安全系数

3.用户使用一个密匙对参数进行hash,这样即使cookie被盗取,也会因为没有密匙而无法获取session id





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值