session 和cookie的区别

1.cookie

cookie分为两种:

①以文件的方式存储在硬盘空间上的长期性的cookie:比如登录时填写的一些信息会被以文件的方式放在客户端的硬盘上。

②停留在浏览器所占内存的临时性的cookie。当用户登录后,session会让cookie产生一个session_id,这个id是存于浏览器所占的内存当中。你关闭浏览器后,id也要消失。

cookie采用的是客户端保持状态的方案,它是客户端的会话状态的一种存储机制。他是服务器在本地机器上存储的小段文本或者是内存中的一段数据,并随着每一个请求发送至同一个服务器。

2.什么是session

session是一种服务器端的信息管理机制,它把这些文件信息以文件的形势存放在服务器的硬盘空间上,这种情况是默认的,可以用memcache把这种数据放到内存里面。请参考web集群时利用memcache来同步session 

注意:session产生的session_id放在cookie里面,如果用户把cookie禁止掉,是不是session也不能用了呢?禁止掉cookie后,session当然可以用,不能通过其他的方式获取这个session_id,比如跟在url后面,或者以表单形式提交到服务器,从而使服务器端了解客户端的状态


当客户端向服务器发出请求时,要求服务器端产生一个session时,服务器端会先检查一下,客户端的cookie里面有没有session_id,是否已经过期。如果有这样的session_id的话,服务器端会根据cookie里的session_id把服务器的session检索出来。如果没有这样的session_id的话,服务器端会重新建立一个。PHPSESSID是一串加了密的字符串,它的生成按照一定的规则来执行。同一客户端启动二次session_start的话,session_id是不一样的。

3.session和cookie谁更安全

就个人而言,我觉得session更安全一点,我以下几点看法。

1,如果session和cookie一样安全的话,二者就没有并要同时存在了,只要cookie就好了,让客户端来分提服务器的负担,并且对于用户来说又是透明的。何乐而不为呢。cookie主要前后端都可以修改,而session不行,也不需要通过协议传递。

2,session的sessionID是放在cookie里,要想功破session的话,第一要功破cookie。功破cookie后,你要得到 sessionID,sessionID是要有人登录,或者启动session_start才会有,你不知道什么时候会有人登录。第二,sessionID是加密的,第二次session_start的时候,前一次的sessionID就没有用了,session过期时sessionid也会失效,想在短时间内功破加了密的 sessionID很难。session是针对某一次通信而言,会话结束session也就随着消失了,而真正的cookie存在于客户端硬盘上的一个文本文件,谁安全很显然了。

3,如果session这么容易被功破,这么不安全的话,我想现有的绝大部分网站都不安全了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大家好,我是IT修真院深圳分院JAVA第02期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院...
    淬火殇阅读 339评论 0 0
  • 这些都是基础知识,不过有必要做深入了解。先简单介绍一下。 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送...
    Hanrydy阅读 516评论 2 7
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,382评论 1 17
  • 我知乎上看到一个很简介的总结,觉得写得非常好,小结一下: 关于cookie 来自其他网页的一些整理 自己抓包看了一...
    DayDayUpppppp阅读 658评论 0 6
  • cookie的存在方式 cookie是浏览器支持的本地存储方式,存储形式是dict(键值对的形式),存储在浏览器中...
    捂不暖的石头阅读 275评论 0 0