关于django中session id与cookie的理解

最近一直被找工作这件事弄得心烦意乱,因此对于django的学习耽搁了不少,趁今晚比较闲,把这篇补上。

原文链接:转载请注明

本文分为几部分来进行介绍:

  1. django中session与cookie的概念,以及相互之间的关系;
  2. session id的作用;
  3. session id被盗可能会引起的危害;
  4. 如何避免危害的发生。

django中session与cookie的概念

我的理解,session与Cookie都可以称作是一种缓存,其存在的最大目的都是为了减少用户request与response之间的时间损耗,提高用户的浏览体验。

Cookies

cookies 是浏览器为 Web 服务器存储的一小段信息。 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies。它保存在浏览器下的某个文件夹下。

Session

Django的Session机制会向请求的浏览器发送cookie字符串。同时也会保存到本地一份,用来验证浏览器登录是否为同一用户。它存在于服务器,Django默认会把session存入到数据库中。

Session依赖于Cookie,如果浏览器不能保存cooki那么session就失效了。因为它需要浏览器的cooki值去session里做对比。 session就是用来在服务器端保存用户的会话状态。由于session是保存在服务器端的,所以用户永远不可能拿到session内的具体内容。

session id的作用

session id是保存在cookie中的一个随机字符串。服务器通过查看用户cookie中的session id信息,获取id,来与session中的用户名进行比对,比对成功,则说明认证通过,可进行其他的操作。

id被盗可能会导致的问题

由于session id是保存在cookie中,而cookie是保存在客户端,因此session id并不安全,如果被不法用户盗取cookie,伪造用户进行登录操作,获得更高的权限,进而对用户账户,或网站造成更大的损害。

如何避免

解决这个的问题有以下几个方面:

  1. 敏感操作需要用户输入密码来进行二次认证;
  2. 网站https化,提高消息传递过程中的安全系数;
  3. 类似oauth,用户使用一个私钥来对参数进行hash,这样即便cookie被盗,也会因为没有私钥而无法获知session id;

由于django中的SESSION_COOKIE_HTTPONLY默认值为True,只能通过http协议来读取,而不能通过js来实现对cookie的窃取。因此不用对此安全性过分担心。

以上就是我对于session id的全部理解,欢迎大家跟我讨论~

参考资料:

小谈django 的 cookie和session

Django中的cookie与session

django 快速实现session的操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值