关于cookie和session的区别: 程序员
一般意义上的cookie指的是利用客户端的技术在计算机用户的文件夹下存储的文件,又名硬盘cookie,通常来讲是有上限的。个人cookie是存在D:\Documents and Settings\qixiaobo\Local Settings\Temporary Internet Files下面,命名规则是cookie:[用户名]@[网站],打开后可发现一般是通过md5编码的。而且它的换行符在windows识别为乱码,表示服务器应该是Linux平台。(windows换行符是\r\n 而Linux换行符是\r) windows
而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的安全: 服务器
通常的记住客户信息有以下几种方式: cookie
1.浏览器记住,这是个大浏览器厂商在对本身浏览器功能的加强,非Java Web程序员所可以利用的。 session
2.普通程序,通常是将用户名,密码写在Properityies文件或者ini文件或者xml文件中。 网站
3.利用cookie,将用户信息直接回写给客户端,而且大部分的网站都提供了该方式,一般的变现形式以下: 编码
两周内免登陆就是指的是将信息利用cookie技术回写至客户端。 spa
而且百卓的搜索中的最近搜索就是利用cookie来保存的,一旦禁用cookie将没法使用该功能。
4.利用session,如上图,若是两周内免登陆不勾选上,表示是利用session技术记住用户信息,一旦浏览器关闭了后从新打开,用户信息依旧是须要输入的。
总结:
正由于cookie是以文件的形式写给浏览器,因此被许多人所诟病。代表其是可修改的,有部分人能够利用技术修改cookie达到本身不付费或者少付费的目的。而且cookie会暴露一我的的隐私等。
可是session确实不太方便,由于session的生命周期是浏览器进程,而一般人们访问某个网站都不是一次性的,而每次都要输入各类信息也比较繁琐。
所以有人发明了所谓的替代方案,将用户信息保存在某个服务器里,而用户只须要记住一个用户名和密码便可,称为主密码。大名鼎鼎的LastPass就是这样一款基于Chrome和Firefox的插件,可是实质上依旧是将客户信息保存起来,一旦服务器被别人所控制,仍是会形成用户信息的丢失。
就目前的互联网来讲,主流仍然是利用cookie和session一块儿来保存用户的信息。并不会说只采用一种。