浅析cookie和session

关于cookie和session的区别:

通常意义上的cookie指的是利用客户端的技术在计算机用户的文件夹下存储的文件,又名硬盘cookie,一般来说是有上限的。我的cookie是存在D:\Documents and Settings\qixiaobo\Local Settings\Temporary Internet Files下面,命名规则是cookie:[用户名]@[网站],打开后可发现通常是经过md5编码的。并且它的换行符在windows识别为乱码,表示服务器应该是Linux平台。(windows换行符是\r\n 而Linux换行符是\r)

而session,又名内存cookie,一般而言是指存放在服务器上的,当用户访问某个网站,网站服务器为用户分配一个Session ID,一般的表现形式为JsessionID,并且也是以cookie的形式存放在客户端,但是他的生命周期就是浏览器进程。也就是说当该浏览器进程被关闭后,重新打开后的浏览器访问同一个网站的分配到的session ID将不是同一个session ID。当cookie被禁用后,编码人员应当考虑到这种情况,应该利用Java提供的方法重写每一个链接。因为此时浏览器无法提供cookie给服务器,所以按照HTTP的无状态,应当无法知道该用户的信息。但是当利用了重写技术后,可以将session ID附加到每一个链接后面,以此来确定用户的信息。

一般的购物网站,如果用户是未注册会员,应当也会记录用户的信息,此时虽然用户用的是session,但是程序员会将用户的session回写回cookie,也就是将cookie的setMaxAge设置为有效的长时间。也更加说明了session的表现形式是cookie。

关于cookie和session的安全:

一般的记住客户信息有如下几种方式:

1.浏览器记住,这是个大浏览器厂商在对自己浏览器功能的增强,非Java Web程序员所能够利用的。

2.普通程序,一般是将用户名,密码写在Properityies文件或者ini文件或者xml文件中。

3.利用cookie,将用户信息直接回写给客户端,并且大部分的网站都提供了该方式,通常的变现形式如下:

两周内免登录就是指的是将信息利用cookie技术回写至客户端。

并且百卓的搜索中的最近搜索就是利用cookie来保存的,一旦禁用cookie将无法使用该功能。

4.利用session,如上图,如果两周内免登录不勾选上,表示是利用session技术记住用户信息,一旦浏览器关闭了后重新打开,用户信息依旧是需要输入的。

总结:

正因为cookie是以文件的形式写给浏览器,所以被许多人所诟病。表明其是可修改的,有部分人可以利用技术修改cookie达到自己不付费或者少付费的目的。并且cookie会暴露一个人的隐私等。

但是session确实不太方便,因为session的生命周期是浏览器进程,而通常人们访问某个网站都不是一次性的,而每次都要输入各种信息也比较繁琐。

因此有人发明了所谓的替代方案,将用户信息保存在某个服务器里,而用户只需要记住一个用户名和密码即可,称为主密码。大名鼎鼎的LastPass就是这样一款基于Chrome和Firefox的插件,但是实质上依旧是将客户信息保存起来,一旦服务器被别人所控制,还是会造成用户信息的丢失。

就目前的互联网来说,主流仍然是利用cookie和session一起来保存用户的信息。并不会说只采用一种。

附:百卓网 http://www.abiz.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据和云计算技术

常见Linux调优命令和工具

引言: 应同学的要求,分享些基础的知识。 没有比Linux更基础了,关键问题来了,你真的认真看了和转发了吗? O(∩_∩)O哈哈~ 要实现对Linux的调优,就...

7338
来自专栏网站漏洞修补

开源程序的网站漏洞检测对获取管理员密码漏洞如何修复

PbootCMS是网站常用的一款CMS系统,是由国内著名程序开发商翔云科技研发的一套网站CMS系统,免费开源,扩展性较高,使用的企业很多但是避免不了网站存在漏洞...

1794
来自专栏企鹅号快讯

缓存在高并发场景下的常见问题

丁浪,阿里影业架构师,社区活跃人士。有分布式事务,分布式缓存方面的总结文章获得好评。 本文获作者授权发布。 缓存一致性问题 当数据时效性要求很高时,需要保证缓存...

1978
来自专栏云计算教程系列

如何在CentOS 7上使用Pacemaker建立Apache主动 - 被动群集

高可用性是当今的一个重要主题,因为服务中断可能非常昂贵。谨慎采取措施,以便在发生中断时保持您的网站或Web应用程序正常运行。使用Pacemaker堆栈,您可以配...

650
来自专栏韩伟的专栏

编写可复用的服务端软件系统应该注意的五个重要细节

编写可复用的服务端软件系统应该注意的五个重要细节 作为程序员,我们往往希望自己写的代码能被最大程度的重用,但是我们依然能看到有很多“被重复发明的轮子”,其原因往...

35810
来自专栏Linyb极客之路

高并发之缓存

应用需要支撑大量并发量,但数据库的性能有限,所以使用缓存来减少数据库压力与提高访问性能。

1482
来自专栏猿人谷

进程、线程、应用程序之间的关系

进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元, 或者说进程之内独立执行的一个单元。对于操 作系统而言,其调度单元是线程。一个进...

2176
来自专栏鸿的学习笔记

流处理

流处理比起之前的批处理而言,需要考虑的东西更多。批处理有个前提,那就是输入必定是固定的大小,而流处理处理的数据是不会暂停的,与线上服务需要处理的数据也不一样,线...

901
来自专栏蓝天

Unix&Linux下常见的性能分析工具介绍

Vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。系统性能分析工具中,使用...

831
来自专栏Web 开发

《Node.js开发指南》翻阅笔记

第一天上班,配套的电脑居然没有到货,无聊了一天,就把《Node.js开发指南》拿出来翻了一下。

790

扫码关注云+社区