cookie和session

1.简单是因为它只是http一个配置
Servlet规范是一个类

2.考虑对cookie的数量和大小限制问题

3.服务器过多时考虑session管理问题共享问题

4.cookie安全问题 cookie被盗、伪造问题

5.作用 保持用户与后端的访问状态

6.cookie数量过多会占用带宽

cookie理解
访问时,服务器将键值对返回,加限制条件,如果下次在访问被带回
类似与购物办卡

设计原因 http的无状态 无法知道用户行为 对用户数据做缓存 区分用户

version0
键值对

name不能重复

expires过期时间

domain域名
path
secure

version1
Version
Comment
CommentUrl
Discard
Max-age
Port

webServlet 不支持version1
但实际应用可设置进去

cookie的创建
1.从request中获取到cookies
2.将信息添加到response中

cookie是如何添加到http的Headers中

tomcat会将cookie的信息自动补全

Tomcat创建set-Cookie时序图

tomcat将cookie信息设置到头部

真正的创建时在Response中完成generateCookieString

注意点:
cookie的name不能和set-cookie以及set-cookie2的属性值一样 非法异常
不能设置非assci码
当有token字符自动转化为version1

我们的set-cookie会和tomcat的进行合并

FireFox的HttpFox查看Cookie

当请求url 浏览器将符合条件的cookie放入request回传服务端 服务端getCookies获取

http没有限制、但浏览器有限制cookie总大小一般5000个 每个域名50个

cookie太多会增加交互带宽

cookie让服务器跟踪客户行为

cookieid每个客户端唯一
id是name为jsesionid

session如何基于cookie工作的
1.基于urlpathparam
2.基于cookie 修改context中的cookie
3.基于ssl默认不支持 设置

tomcat会覆盖url的sessionId??

session如何工作

1.获取sessionid
2.创建httpsession对象 request

3.没有新建加入Manger.sessions容器中保存
Manger类管理所有session的生命周期,服务器关闭序列化磁盘

StandardSessionFacade
对象的门面

Request
Servlet

session的工作时序图
步骤

一个客户端对应一个StandardSession

StandardManger如何管理StandardSession

1.当Servlet容器重启或者关闭时,StandardManger

没有过期的持久化到session.ser文件中

upload

对象并不是永远保存的,否则消耗内存
每个session对象有有效时间,超时清楚

tomcat的maxInactiveInterval

检查是否失效是后台线程backgroudProcess()
request.getSession也会校验
Tomcat获取时失效新建

总结Cookie是通过把保存的数据通过http头部从客户端传到服务端
又从服务端在传回到客户端,所有数据存在客户端浏览器里

可通过Cookie插件修改增加

Session更加安全保存在服务端通过Cookie传一个SessionId更适合保存用户隐私和重要数据

Cookie可以很好的解决分布式部署
用户每次访问都将最新值带回到该请求的服务器

同一个用户请求不在同一个服务器Cookie不一致问题

存在的问题Cookie存储限制
Cookie管理混乱****
安全 Cookie加密维护加密key定期更新加密key也是一个安全因素

分布式session框架
1.配置统一管理
2.Cookie监控和统一规范
3.Session存储多元化
4.Session配置动态修改5.加密key定期修改
6.宰容机制
7.存储监控和报警
8.扩展wapSession
9.跨域名Session和Cookie如何共享

同一网站多域名

分布式Sesssion框架实现原理

Cookie压缩问题

表单重复提交问题
1.网速过慢
2.恶意攻击

思路
标记每一次访问请求

方式表单域加一个隐藏表单项 表单项每一次都是唯一token
crsf_token
请求时生成唯一token写入到Session中 检查token是否一致

生成唯一key算法是根据一个种子生成随机数保存在Session中,之后做校验

多总端session一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值