`
qqjavagood
  • 浏览: 99018 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

jsessionid 问题分析

阅读更多



jsessionid 问题分析

Posted on 2011-09-02 16:33 疯狂 阅读(1547) 评论(2)  编辑  收藏 





这几天为了测试人员测试,就把一个tomcat应用整个拷贝了一份,改了下端口一个8080,一个8081,上下文也一样,结果出问题了:页面登陆验证码死活验证不过去,最后跟踪了下后台发现,登陆界面请求时生成验证码并将验证码放入session里面,这个session的id和验证时从获取验证码的session的的id不一样,那验证的时候由于session不一样,获取验证码肯定为空,最终验证失败。

根据一般的流程,浏览器首次发出请求的时候服务端会在response信息里面给出:
Set-Cookie: JSESSIONID=0000yLsny8JFy4nLxDelrrq9Lx1:-1; Path=/test (这里假设服务器生成的sessionid为0000yLsny8JFy4nLxDelrrq9Lx1,应用上下文为test)要求浏览器设置浏览器会话cookie,下次请求的时候在request头信息里面附带:
Cookie: JSESSIONID=0000yLsny8JFy4nLxDelrrq9Lx1:-1 服务器以此来判断是否统一客户端发出的请求。

而跟踪我们的应用发现第一次浏览器发出请求后,服务端response信息为:
Set-CookieJSESSIONID=C7A2EB23B029226E6279448D1CFD6207; Path=/test
第二次发出请求的时候整个会话信息为:
响应头信息原始头信息:
Set-Cookie: JSESSIONID=AD54301B809A7D7BBF909F10B4C838AA; Path=/test
请求头信息原始头信息:
Cookie    JSESSIONID=4DF629829C6E18953117AB66777ED2CA

浏览器虽然第二次请求带过去的JSESSIONID并不是第一次设置(C7A2EB23B029226E6279448D1CFD6207),并且服务端又发出了新的Set-Cookie命令和JSESSIONID。

最终才想起还有另一个tomcat应用的copy修改了本次的cookie session 里面的JSESSIONID值,
正好跟踪到信息为:
Set-Cookie      JSESSIONID=4DF629829C6E18953117AB66777ED2CA; Path=/test (这一次请求影响)
Cookie    JSESSIONID=C7A2EB23B029226E6279448D1CFD6207(原应用的JSESSIONID)

通过查看火狐浏览器里面两个应用在同一个主机(localhost)下面只存了一份名为JSESSIONID的cookie值,结果导致互相影响。 


现在tomcat下的一个办法就是两个应用其中一个修改下上下文,例如一个是test,另一个是test1 ,这样由于cookie的路径(path)在同一个级别下名称不一样将不会互相影响。
浏览器判断cookie的应该根据主机,路径,名称来判断,通常根据目录层级不同作用域也不同,例如:
比如浏览器现有三个cookie, path分别为 "/", "/test", "/test/mgr" 则请求 "/test/other/action.do"时,第1个cookie和第2个cookie会被发给服务端,第三个不会。
此时浏览器请求头信息里面的session有可能为多个,但名称都一样如:
Cookie: JSESSIONID=8810E51861891187708C53A1805951A1;JSESSIONID=0000yLsny8JFy4nLxDelrrq9Lx1:-1
这个时候也是出现问题的时候,服务器有可能出现jsessionid不一致的情况,
一个明显的问题在websphere下由于默认的cookie session的path为/ 如图:

这个时候如果同一台主机或者ip下部署其他应用,如果都是用JSESSIONID作为key的话,由于/的作用域大,其他的应用将受到影响,首先websphere自己会受到影响,经过测试websphere的每一次请求如下:
Set-Cookie: JSESSIONID=0000yLsny8JFy4nLxDelrrq9Lx1:-1; Path=/
然后后面多次出现信息如下:
相应
Set-Cookie: JSESSIONID= 0000IsxSqg75ELW4C0Y3YCaRgab:-1; Path=/
请求
Cookie:
JSESSIONID=8810E51861891187708C53A1805951A1(这个为tomcat的);JSESSIONID=0000yLsny8JFy4nLxDelrrq9Lx1:-1

遇到这种异常情况,请大家从cookie的domain,path,作用域的知识分析下,然后就应该能解决这些问题了,适当的修改下cookie的key名称,和path。

这里给看下百度的明显和其他的不一样用的是(baiduid作为key):



~完~


0
1
分享到:
评论
1 楼 student_stu 2011-12-05  

相关推荐

    tomcat修改jsessionid在cookie中的名称

    ### Tomcat中修改JSessionID在Cookie中的名称 在Tomcat服务器中,默认情况下,用于传递会话标识(即JSessionID)的Cookie名称为“JSESSIONID”。有时,出于安全考虑或其他需求,我们可能需要自定义这个名称。本文将...

    UrlFilter过滤jsessionId

    下面对该类进行详细的分析: 1. **实现Filter接口:** - `Filter`接口定义了三个方法:`init(FilterConfig config)`、`doFilter(ServletRequest request, ServletResponse response, FilterChain chain)` 和 `...

    Set-Cookie: JSESSIONID=8AB51DC4244907FD9EBB063C7FD73CBA; Path=/; HttpOnly

    例如,在某些 Web 应用程序中,如果 Cookie 中的路径属性设置为当前项目的路径,那么攻击者可以通过分析 Cookie 中的路径属性来获取项目路径,从而实施攻击。 解决思路 解决 Cookie 路径属性暴露问题有两种思路...

    关于集群 cook 覆盖问题 及解决方法

    **一、现象分析** 当用户在一个域(例如,域A的9000端口应用CA)登录后,再访问另一个域(如域B的8000端口应用CB),返回原域A时可能会发现Session丢失。此外,如果应用CA内有链接直接跳转到应用CB,同样可能导致...

    resin常见有关问题

    此时,应进行线程转储以分析问题。同时,启用完全调试日志模式,通过检查日志找出问题的根源。 1.2. Resin频繁重启 这可能是由于某种错误导致Resin不断崩溃。启用调试日志可以帮助识别导致重启的原因。 1.3. java....

    LR手动关联参数化问题总结

    - **分析Parameter Substitution日志**:查找参数的值是否按预期变化。 3. **使用SaveOffset解决特定问题**:当目标数据前后有干扰字符时,可以使用`SaveOffset`属性来指定从哪个位置开始保存数据。 **示例**:...

    WebLogic_Cluster_HTTP会话复制失败的故障处理总结

    - JSessionID格式分析:JSessionID默认为会话标识符,可在weblogic.xml中自定义。其格式为`SessionId!PrimaryServerJVMHash!SecondaryServerJVMHash`,用于唯一识别每个会话及其对应的服务器实例。 #### 总结 面对...

    一个基于vitamio的视频播放器

    3. **网络视频播放**:实现网络视频播放通常涉及到HTTP或RTSP协议的流媒体处理,可能还需要处理缓冲、加载进度显示等问题。Vitamio库在这方面提供了强大的支持,能够处理网络延迟和带宽限制,为用户提供流畅的观看...

    Nignx 连接tomcat时会话粘性问题分析及解决方法

    **问题分析** 1. 当用户首次访问时,没有携带 session 信息,Nginx 使用轮询(round robin)策略将请求分发到某台 Tomcat。 2. Tomcat 服务器创建 session 并将其信息返回给客户端。 3. 客户端再次请求时,Nginx ...

    flex 利用FileReference上传firefox报2038错误

    ### flex 利用FileReference上传firefox报2038错误 ...通过上述分析和讨论,我们可以看出在处理Flex应用中的文件上传问题时,需要综合考虑多个方面的影响因素,并采取适当的措施来解决实际遇到的问题。

    解决java后台登录前后cookie不一致问题

    **问题分析** 登录前后Cookie不一致的问题可能由以下几个原因引起: 1. **Session ID冲突**:在用户登录过程中,服务器可能会分配一个新的Session ID,但客户端的Cookie仍然持有旧的Session ID。 2. **Cookie更新...

    彻底解决android用HttpUrlConnection与web服务器之间session保持问题

    **问题分析** 在Android中,使用HttpURLConnection时,如果没有正确处理Cookie,服务器就无法识别连续的请求来自同一会话。通常情况下,Web浏览器会自动处理Cookie,但在Android应用中,开发者需要手动处理这一过程...

    PHP关于IE下的iframe跨域导致session丢失问题解决方法

    通过分析上述文档内容,我们可以了解到以下几点关于PHP、session、跨域iframe嵌套以及IE浏览器兼容性问题的解决方法: 1. **跨域iframe与session问题**: 当一个网站的登录页面被别的网站使用iframe嵌入后,登录...

    Tomcat中实现Session小结

    在本文中,我们将深入...了解这些原理对于优化Web应用性能、处理会话管理问题以及确保用户安全性至关重要。在实际开发中,合理使用Session能够极大地提升用户体验,但也要注意避免Session过多导致的服务器资源消耗。

    HaProxy中文指南

    通过上述分析,我们可以看出HaProxy不仅能够有效地解决单一服务器负载过高的问题,还能够提供更加灵活的负载均衡策略和高可用性支持。无论是简单的基于cookie插入的方式还是基于现有会话标识的高级配置,都能够显著...

    apache+tomcat集群配置文件和文档

    同时,为每个Tomcat实例配置独立的访问日志,便于追踪和分析问题。 这份"apache+tomcat集群配置文件和文档"将涵盖以上所有要点,指导你逐步配置和测试Apache+Tomcat集群。按照文档操作,你将能够构建出一个高效且...

    高级软件人才培训专家-day12-SpringBootWeb 登录认证

    ##### 问题分析 - 在未登录的情况下,可以直接访问受保护的页面或功能,如部门管理、员工管理等。 - **解决方案**:通过会话管理和拦截器技术来实现登录校验。 ##### 会话跟踪技术 - **会话**:指用户与服务器之间...

    spring-session简介及实现原理源码分析

    Spring-Session 还提供了 RESTful API,不依赖于 Cookie,并且可以通过 Header 传递 JSESSIONID。 Spring-Session 的实现原理 Spring-Session 的实现原理可以分为以下几个步骤: 1. 自定义个 Filter,实现 ...

    用户登录Java

    1. 日志记录:使用log4j或logback等日志框架记录用户登录活动,便于分析和排查问题。 2. 监控工具:集成如Spring Boot Actuator等监控工具,可以实时查看登录成功率、失败率以及异常情况。 3. 数据可视化:通过ELK...

    Apache负载均衡

    还可以使用Apache的`mod_status`模块或第三方工具(如Nagios、Zabbix等)进行更详细的监控和性能分析,以便根据实际情况调整负载均衡策略。 综上所述,Apache 2.4实现负载均衡的关键在于正确配置和使用mod_proxy和...

Global site tag (gtag.js) - Google Analytics