Session的小测试

版权声明:本文为博主原创文章,转载请注明原文链接 https://blog.csdn.net/qq_36922927/article/details/84109167

在网站项目中,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就可以免登录(嘿嘿,突然有个大胆的想法,这个能有什么方式去避免呢?)

猜你喜欢

转载自blog.csdn.net/qq_36922927/article/details/84109167