成因
单纯信息展示的web1.0升级为web2.0后,出于对交互的需要。
特征
都是服务器生成的。
他们都是键值对应的,都是用来存储特定的数据。
Session是保存在服务器端,Cookie是保存在客户端。
- 一般来说,SessionID会以Cookie的形式返回给客户端。SessionID相当于信用卡,Cookie类似于饭票/人民币(有防伪措施,发给客户端的)。
都有生命周期
一般来说,Cookie的使用都是由浏览器来自动完成。
浏览器会自动将客户端存活的Cookie封装在请求信息头中发送给服务器,因此Cookie的生命周期一般收到2个因素的影响:1 Cookie本身的生命周期;2 客户端Cookie文件是否存在。
- Session的生命周期一般来说主要由生命周期和连接是否关闭来决定。(PS:客户端连接关闭其实是客户端自己丢失了,服务器端其实还是可能存在Session的。
- 都是由其作用域的。(Jmeter的session/cookie管理器的原因)session_destroy销毁(php)
- 关闭浏览器session存活时间是服务设置的最大值
误区
- session是随机的
SessionID是随机的,session不是随机的,有一定生成机制。
- Cookie是安全的
黑客破解了生成机制就可以像盗版人民币一样。可以盗取其他用户的财产。截获SessionID就像盗刷信用卡,只能盗取这个用户的财产。重要信息如用户名,用session,不重要的如皮肤什么的用cookie做来降低服务器的负担。
- qq自动登录是保存的session吗?
流行的做法是oauth第三方认证
- 任何认证的信息是服务器给的,session是最早的机制,因为会被破解,不够安全才有的第三方认证之类的认证机制。认证可以是任何形式,键值对,表单,第三方均可。