-
为什么需要Cookie和Session?
- WEB应用程序是使用HTTP协议传输数据的。
- HTTP协议是无状态的协议,一旦数据提交完毕,客户端与服务端的连接就会关闭,再次交换数据需要建立新的连接。
- 这就意味着服务器无法从连接上跟踪会话。
- 要实现跟踪会话必须引入一种机制。
-
Cookie
- Cookie是浏览器存储数据以此来追踪用户和识别用户的机制,从实现来说,cookie是存储在客户端上的一个数据片段。
- Cookie运行原理
- 客户端向服务端发起一个HTTP请求
- 如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个cookie(通行证)。客户端会把cookie保存起来。
- 当浏览器再请求该网站时,浏览器把请求的网址连同该cookie一起提交给服务器。
- 服务器检查该cookie,以此来辨识用户状态。服务器还可以根据需要修改cookie的内容。
- Cookie安全性问题
- 不安全的原因:因为它存储在浏览器端(用户本地),一些别有用心的人能够通过浏览器截获cookie。
- 不安全的表现形式:
- cookie欺骗:cookie加密,一些别有用心的人并不需要直到cookie的具体含义,只需将这个cookie向服务器提交,使得身份验证通过。
- cookie截获:cookie以纯文本的形式在浏览器和服务器之间传递,在web通信时极容易被非法用户截获和利用。非法截获cookie后,在cookie的有效时间内重新发送给服务器,就可以获得用户权限。
- 如何解决cookie安全性问题
- 设置cookie有效期不要太长
- 加密cookie
- session和cookie同时使用,相对的session更安全,可以将相对重要的信息存入session。
- 使用https
-
Session
- Session是服务器端使用的一种记录客户端状态的机制,使用上比cookie简单一些,相应的也增加了服务器的存储压力。
- Session运行原理
- 客户端向服务端发起一个HTTP请求
- 服务端根据设置的session创建指令,在服务端创建一个编号为sessionid的文件。
- 服务端将sessionid编号响应给客户端,客户将该编号存在cookie中。
- 当下一次请求时,客户端将这个sessionid携带在请求中,发送给服务端,服务端根据这个sessionid来做一些业务判断。
-
cookie和session的比较
cookie session 存储在客户端 存储在服务端 不是很安全 相对更安全 存储容量为4K 存储容量不限 只能存储string对象 可以存储任意对象 默认销毁时间是整个会话(浏览器关闭) 默认销毁时间是30分钟 - 相同点:都是为了记录当前用户的信息