最近碰到了串号问题,即A登录后,进入某个功能时,看到了B的页面。困扰了很多时间。查看http响应头内容如下:
Age:1762
Content-Language:zh-CN
Content-Length:25035
Content-Type:text/html;charset=UTF-8
Date:Mon, 28 Mar 2016 01:11:45 GMT
“Age”http头?查看http协议定义如下:
The Age response-header field conveys the sender's estimate of the amount of time since the response (or its revalidation) was generated at the origin server. A cached response is “fresh” if its age does not exceed its freshness lifetime.
这个页面被缓存了?否则的话,不会产生Age头啊。最终发现web防火墙中开启了站点加速功能,关闭加速功能并清空缓存后,问题解决。
转一篇文章:http://it.taocms.org/06/791.htm
说起淘宝网用户串号,我的印象里技术bug原因的有两起。2010年,这个串号持续的时间比较长,我估计应该存在几年时间了。从淘宝的论坛里隔三差五会爆出案例来,xxx突然在访问我的淘宝页面时进入了别人家的账号,第一感觉是发现“所有已买到的,或者已卖出的商品”都不是自己的,并且可以对这些信息进行任意的操作,比如删除,下架。
另一起是,淘宝2012年11的时候爆出来的串号,突然有个卖家告诉我他进入了别人的店铺,并且可以进行任意的操作。
另外还有一种串号的场景,不过不是由于系统bug引起的,主要是因为数据被缓存引起的串号,这种串号不是真正意义上的串号,因为页面被isv或者某个局域网缓存了,导致看到了别人的商品或者店铺,这种场景用户是不能对看到的页面和数据进行任何管理操作的。
一般这种串号场景我们会在url的后缀上加上一个时间戳,让每个用户的url都不一样,以防止缓存,比如在生成菜单等超链接的时候统一增加时间戳。
淘宝因为历史原因,所有页面的url都是以htm结尾,这样容易被误认为是静态页面,所以被缓存了也不奇怪。这种类型的串号排查起来也比较简单,问题比较容易被确定,主要判断标准就是只看到了别人的页面,但是没有任何操作权限,并且在url后面加个&id=111之类的参数,页面立马就正常了。
重点说说前两期串号
第一起称为“request异常引起的串号”,原因是和jboss的tomcat在实现request的时候对异常处理不够准确
Request.java的方法:protected void parseParameters()存在bug,request解析参数存在读取脏数据的可能,这样如果用户在login的时候,出现了这个bug,就有可能login成别人的账号。
http://anonsvn.jboss.org/repos/jbossweb/tags/JBOSSWEB_2_0_1_GA/src/share/classes/org/apache/catalina/connector/Request.java
第二起称为“非法缓存引起的串号”,原因是店铺系统“shopsystem”在做静态化改造的时候,前置了一个缓存服务器,这个服务器错误的把http的头也给缓存了(头里包含setcookie),因为sessionID是由session框架的客户端在每个系统里创建的,如果http的头被缓存了,那么这个sessionID就会串成了别人的sessionID 。(这里有个疑问,之前cookie里有个签名用来比较和服务端加密出来的值是否一致,如果不一致会清空cookie和session信息,让用户退出登录,为什么这个行为没有被触发呢?按照这个场景,并没有把cookie信息进行修改,而只是修改了sessionID一个cookie,理论上客户端的关键cookie信息和服务端的信息应该是不一致的)
这两起问题的排查周期都比较长,因为没有一个很好的办法可以识别这种串号问题,而且重现比较困难。既然有第二次串号,相信还会有第三次,第四次。那需要做一些什么事情来杜绝呢?或者有一些可以比较快速就能定位问题的方案。
为了解决串号做过的一些事情:
cookie里增加一个值,用来记录通过关键cookie生产的签名,这个签名是算法非常简单。每次请求到服务端的时候session框架代码里会对此签名进行匹配,如果和服务端获取的数据签名出来的值是一致的,则认为合法,否则清空session信息和cookie信息,让用户重新登录。
思考:session串号
1、能不能杜绝?
2、排查问题能不能更加快速?期望做到一旦发生串号可以被方便的发现,并且定位到是哪个系统导致的。
相关推荐
企业微信会话内容存档是一项重要的功能,旨在帮助企业实现内外部监管合规,提高客户服务质量,以及内部协作效率。这一功能允许企业保存企业微信与微信之间的会话,跨企业的企业微信会话,以及同一企业内部的沟通记录...
"CRT批量添加会话" CRT(SecureCRT)是一款功能强大的终端仿真器,可以连接到多种类型的设备和服务器,但是在管理大量设备时,添加会话表的工作变得非常痛苦。为了解决这个问题,本文将介绍如何使用CRT快速添加会话...
在企业微信的日常使用中,为了保障企业内部沟通的合规性、审计需求以及信息安全,企业微信提供了会话存档功能。这个功能允许企业保存并管理员工间的聊天记录,以便后续查阅或审计。而PHP作为广泛应用于Web开发的编程...
ASP.NET 会话状态是Web开发中用于保持用户在浏览多页应用时的状态信息的关键机制。由于HTTP协议的无状态特性,服务器无法自动记住不同请求之间的用户信息。为了解决这个问题,ASP.NET提供了会话状态功能,使得开发者...
java的springboot框架获取企业微信会话内容进行存档,支持windows部署、linux下的docker部署; 能学到什么:企业微信获取会话的流程;企业微信的获取会话内容的公钥私钥加解密;获取企业微信会话内容; 阅读建议:此...
java的springboot框架获取企业微信会话内容进行存档,支持windows部署、linux下的docker部署; 能学到什么:企业微信获取会话的流程;企业微信的获取会话内容的公钥私钥加解密;获取企业微信会话内容; 阅读建议:此...
F5负载均衡算法以及会话保持 _Load Balancing_ 是一种分布式架构的技术,将客户端的请求分配到多个服务器上,以提高系统的可用性、可扩展性和性能。F5 是一种常用的负载均衡器厂商,其 BIG-IP LTM 产品提供了多种...
【F5负载均衡会话保持】是网络架构中一种关键的技术,主要应用于大型网络环境,尤其是需要处理大量并发用户请求的场景,例如电子商务网站、银行系统等。F5的BIG-IP产品是一款强大的负载均衡器,它能够有效地管理和...
### Oracle 查看当前会话执行的SQL语句 在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看...
### 从pcap文件中析取所有TCP会话与UDP会话 #### 概述 本文档介绍了一种从pcap文件中提取所有TCP和UDP会话的方法,并详细阐述了其实现过程及其背后的设计思想。这种方法对于网络安全分析、流量监控等领域具有重要...
ISO 14229-2标准的全名是《道路车辆—统一诊断服务(UDS)—第2部分:会话层服务》。这是一系列国际标准中的一部分,专注于为汽车行业的电子控制单元(ECU)诊断提供统一的方法和协议。UDS标准定义了汽车制造商、...
本文将对 UE 注册、建立会话、释放会话、UE 注销信令流程中的关键步骤进行详细分析,涵盖 PFCP 会话修改响应、PFCP关联设置请求、NAUSF UE 认证请求、RRC 连接设置完成、NG 设置请求、RAN 配置更新、UE Capability ...
Servlet 会话技术详解 在 Web 应用程序中,会话是一种非常重要的概念,用于记录和跟踪用户的交互行为。Servlet 提供了两种类型的会话技术,即 Cookie 和 Session,下面我们将详细介绍这两种技术的实现原理和应用...
为了解决这个问题,Web开发者使用了会话跟踪技术,如Servlet中的HttpSession对象。 会话(session)是在用户与服务器交互的过程中,一系列连续的请求和响应形成的连接。例如,当用户浏览一个电子商务网站并添加商品...
F5会话保持 F5会话保持是指在负载均衡器上的一种机制,可以识别客户与服务器之间交互过程的关连性,在作负载均衡的同时,还保证一系列相关连的访问请求会保持分配到一台服务器上。这种机制对大多数电子商务的应用...
**SIP会话初始协议技术要求详解** 会话初始协议(Session Initiation Protocol,简称SIP)是一种应用层控制协议,用于初始化、管理和终止多媒体通信会话,如语音通话、视频会议等。在《SIP会话初始协议技术要求》中...
企业微信会话内容存档是企业微信为企业提供的一项重要功能,它允许企业合规地存档内部及与客户的聊天记录,以便于后期审计、管理和数据分析。本压缩包“企业微信会话内容存档php扩展.zip”提供了针对PHP环境的扩展,...
简单会话保持里另外一个很重要的参数就是连接超时值,BIGIP 会为每一个进行会话保持的会话设定一个时间值,当一个会话上一次完成到这个会话下次再来之前的间隔如果小于这个超时值,BIGIP 将会将新的连接进行会话保持...
在Windows 7系统下,如果从XP系统中拷贝了超级终端程序并尝试运行,可能会遇到无法读取会话文件的问题。这个问题主要源于文件格式不兼容或缺少必要的依赖。 首先,我们需要理解超级终端的工作原理。超级终端是一款...