灵魂拷问
初级:
- cookie是什么?cookies其实就是存储在客户端的一组数据。
- cookies和session区别
- 什么时候要用到cookie
- 什么时候不应该用cookie,why?
- cookie用户可以看到,修改,所以不能存储机密信息,对于安全性高的,不能用cookie
- 存储大量内容的时候,因为cookie有大小限制
中级:
- 请求页面如何指定cookie值
- cookie什么情况下失效?过期了;刷新网页自动删除了;被浏览器禁用了;部分参数有问题导致失效。
高级问题:
- 客户端禁用了cookies怎么办?
- HTTP报文
- 行 url读取sessionid
- 正文 发送sessionid
- HTTP报文
cookies和session都是用于身份信息认证的作用。
cookie数据的创建过程
cookie实现鉴权的原理:
当客户端第一次访问服务器时,那么服务器就会产生cookie,然后通过响应头的方式在Set-cookie中保存,传输到客户端,客户端从第2-N次请求都会自动的带上这些cookie。
特点:
- 由服务端发出
- 在客户端存储
- 客户端在每次请求的时候,都会自动携带
致命弱点:cookie保存在客户端,对于有些敏感信息不安全。
cookie 测试要点:
1、检查cookies是否能正常工作
2、是否按预订的时间进行保存
3、刷新对cookies有什么影响等,例如重新生成cookie
4、禁用或删除cookie是否有友好提示(重新登录等)
浏览器缓存
为了节约网络资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就能从本地磁盘显示文档,这样就能加速网页的阅览。
cookie和缓存的区别
1.缓存只是对静态资源的处理;cookie是一种动态机制
2.缓存大小受资源和磁盘空间的限制
cookie本身大小有限制,浏览器限制大小不能超过4kb
缓存不会发送服务器,cookie会与请求一并自动发送
作用不一样。缓存浏览器可以直接从本地磁盘显示文档,加快网页阅览。cookie是服务器辨别用户身份,维护通信传输状态。
session
session 即会话,进行某些获得持续的一段时间。从打开某个网站到关闭浏览器,是一个会话。
session鉴权:
当用户第一次访问服务器的时候,在服务器端保存一个sessionid,这个sessionid是经过加密处理的,然后通过http响应头中的set-cookie发送给客户端保存,以后每次请求服务器的时候只发送sessionid.
服务器创建的session标识是全局唯一的,一串字符
一般存储在服务器内存中
session标识被发往浏览器时,会设置过期时间为1970年1月1日的1秒,表示一个过去式
浏览器拿到session标识后,会临时存储,整个是一个会话cookie,所以浏览器关闭它就消失。
致命弱点:解决了cookie的安全隐患,但是出现了大量客户访问的时候会导致服务器崩溃。
session销毁
session有超时机制,超时系统会自动注销session
session有注销机制,调用invalidate方法注销
通常关闭应用Tomcat,所有的session都会被注销,关闭服务器。
注意:关闭服务器不会注销session哦!
session和cookie实现登陆
当浏览器发送请求时,服务器会自动判断浏览器是否带有sessioinID
若没有session ID,则服务器会生成一个全新的sessionID给浏览器
如果有session ID,则会校验服务器内存是否存在,若不存在,则立马生成一个全新的给它;若存在,则不处理
之后每次请求,都会刷新服务器sessionID的有效期
一般浏览器会将sessionID存到cookie中。若用户主动注销,服务器会同时删除服务端sessionID和客户端cookie
Token
当一个用户登录之后,就给他发送一个token令牌,下一次用户再次请求的时候,只需要带上这个token令牌。服务器通过token令牌验证身份。
Token认证方式与session类似。为了防止客户端伪造session id. token采用时间戳+签名的方式一起作为token发送到服务端,服务端验证签名数据,通过则可访问,否则拒绝请求。
弱点:对于第三方支付,银行,金融等安全要求很高,就出现了通过接口签名解决。
cookie、session、token三种区别
cookie:保存在浏览器中,有大小限制,有状态
session:保存在服务器中,服务器有资源开销,分布式、跨系统不好实现
token:客户端可以将token保存到任何地方,无限制,无状态,利于分布式部署
相同点:都是用于做鉴权的,都是服务器产生的
区别:
1.存放位置不同:session存放于服务器内存;cookies存放于客户端。多大量用户同时访问时,会增大服务器的压力,导致内存溢出。
token存在服务器的文件或数据库,比session更省服务器资源。token只需要在服务器解密即可。
2.安全程度不同:session安全性比cookies高,cookie容易被cookies欺骗
3.数据存储大小不同:cookies一般不超过4kb,session没有限制。
4.会话机制不同:session时一种服务器端机制,通过哈希表的结构来保存信息;cookies是服务器生成的,保存在客户端的一个文本串,会随每个请求一并发送到服务器进行身份验证。