session与cookie的区别?

两者的关系:
都是为了实现客户端与服务端交互而产出
Cookie是保存在客户端,缺点易伪造、不安全
Session是保存在服务端,会消耗服务器资源
Session实现有两种方式:Cookie和URL重写
session是通过cookie来工作的
session和cookie之间是通过 C O O K I E [ ′ P H P S E S S I D ′ ] 来 联 系 的 , 通 过 _COOKIE['PHPSESSID']来联系的,通过 COOKIE[PHPSESSID]_COOKIE[‘PHPSESSID’]可以知道session的id,从而获取到其他的信息。

两者的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie是以明文的方式存放在客户端的,安全性低,可以通过一个加密算法进行加密后存放; session存放于服务器的内存中,所以安全性好
cookie不是很安全,别人可以分析存放在本zhi地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5.生命周期:
cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束;
session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁。但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期。关机会造成session生命周期的结束,但是对cookie没有影响

6.访问范围:
cookie为多个用户浏览器共享; session为一个用户浏览器独享

.session不区分路径,同一个用户在同一个网站期间,所有的session在任何一个地方都可以访问到。而cookies是区分路径的,如果设置了路径参数,那么同一个网站不同路径下的cookies是互相访问不到的。

举例子
简 单的说,当你登录一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上面,客户端每次请求服务器的时候会发送 当前会话的sessionid,服务器根据当前sessionid判断相应的用户数据标志,以确定用户是否登录,或具有某种权限。由于数据是存储在服务器 上面,所以你不能伪造,但是如果你能够获取某个登录用户的sessionid,用特殊的浏览器伪造该用户的请求也是能够成功的。sessionid是服务 器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,也不是没有重复的可能性,我曾经就遇到过一次。登录某个网站,开始显示的 是自己的信息,等一段时间超时了,一刷新,居然显示了别人的信息。

如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。服 务器会解释为 cookie变量。所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。如果你能够截获某个用户的 cookie变量,然后伪造一个数据包发送过去,那么服务器还是认为你是合法的。所以,使用 cookie被攻击的可能性比较大。如果设置了的有效时间,那么它会将 cookie保存在客户端的硬盘上,下次再访问该网站的时候,浏览器先检查有没有 cookie,如果有的话,就读取该 cookie,然后发送给服务器。如果你在机器上面保存了某个论坛 cookie,有效期是一年,如果有人入侵你的机器,将你的 cookie拷走,然后放在他的浏览器的目录下面,那么他登录该网站的时候就是用你的的身份登录的。所以 cookie是可以伪造的。当然,伪造的时候需要主意,直接copy cookie文件到 cookie目录,浏览器是不认的,他有一个index.dat文件,存储了 cookie文件的建立时间,以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从保证时间上骗过浏览器,曾经在学校的vbb论坛上面做过试验,copy别人的 cookie登录,冒用了别人的名义发帖子,完全没有问题。

Session介绍

cookie介绍

来源于网络

你可能感兴趣的:(WEB)