Session的小测试

在网站项目中,session担任了一个很重要的角色,他代表了当前用户的标识信息

但是前端是静态页面。怎么能知道是哪一个session呢?或者是后台收到request请求,那么如何知道这个request是哪一个用户(session)提交的呢?

这就有个问题了。

如何找到session?

session有一个id,这是一个唯一的标识,当会话(session created)被创建,就会得到一个唯一id,然后将这个id保存到cookie,也就是name=JSESSIONID 的cookie,前端每次请求,后台就根据request中带来的cookie是否有session的id,没有,就创建一个session,同时返回response中写回到客户端浏览器。

为了验证这个猜测:

做出以下实验:

接口后台:

实验1:不禁用浏览器cookie

连续两次调用同一个接口,这个接口返回当前session 的id

第一次:

第二次:

查看浏览器cookie:果然JSESSIONID和sessionid一致

实验2:将cookie全部禁用,

使用火狐浏览器开发者版,,测试接口调用

第一次:

第二次:

结果:

控制台没有cookie,并且每次调用后台返回的session id不同。

实验3:仿造session

使用postman 将实验1中得到的session id 拷贝到postman工具中,测试接口调用

结果:

结论:

此次表明:如果后台检查request中带到的cookie中的session id 如果是正常的,未过期的,就不会创建新的session

那么,如果session id随便输入一串字符呢,后台是不是应该创建新的session?

测试:jsession 改为:把刚才postman中的session id最后一位改变为7

发现如果篡改成一个没有产生过的sessionid,后台会创建新的session。

总结:

1,客户端访问后台,后台根据request是否带有有效的session id来决定是否产生新的session,

2,如果禁用cookie,那么用户的的登录状态无法得到保证

3,session 可以被仿造,拿到已登录用户的session id就可以免登录(嘿嘿,突然有个大胆的想法,这个能有什么方式去避免呢?)

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值