说说会话串号

标签: 分布式和集群 多线程 开发技巧和教训 | 发表时间:2013-06-13 14:17 | 作者:xiaoxie
出处:http://jm.taobao.org

说起淘宝网用户串号,我的印象里技术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成别人的账号。
    第二起称为“非法缓存引起的串号”,原因是店铺系统“shopsystem”在做静态化改造的时候,前置了一个缓存服务器,这个服务器错误的把http的头也给缓存了(头里包含setcookie),因为sessionID是由session框架的客户端在每个系统里创建的,如果http的头被缓存了,那么这个sessionID就会串成了别人的sessionID 。(这里有个疑问,之前cookie里有个签名用来比较和服务端加密出来的值是否一致,如果不一致会清空cookie和session信息,让用户退出登录,为什么这个行为没有被触发呢?按照这个场景,并没有把cookie信息进行修改,而只是修改了sessionID一个cookie,理论上客户端的关键cookie信息和服务端的信息应该是不一致的)
    这两起问题的排查周期都比较长,因为没有一个很好的办法可以识别这种串号问题,而且重现比较困难。既然有第二次串号,相信还会有第三次,第四次。那需要做一些什么事情来杜绝呢?或者有一些可以比较快速就能定位问题的方案。
为了解决串号做过的一些事情:
cookie里增加一个值,用来记录通过关键cookie生产的签名,这个签名是算法非常简单。每次请求到服务端的时候session框架代码里会对此签名进行匹配,如果和服务端获取的数据签名出来的值是一致的,则认为合法,否则清空session信息和cookie信息,让用户重新登录。
思考:session串号
1、能不能杜绝?
2、排查问题能不能更加快速?期望做到一旦发生串号可以被方便的发现,并且定位到是哪个系统导致的。

相关 [会话] 推荐:

Servlet – 会话跟踪

- - ImportNew
HTTP本身是 “无状态”协议,它不保存连接交互信息,一次响应完成之后即连接断开,下一次请求需要重新建立连接,服务器不记录上次连接的内容.因此如果判断两次连接是否是同一用户, 就需要使用 会话跟踪技术来解决.常见的会话跟踪技术有如下几种:. URL重写: 在URL结尾附加. 会话ID标识,服务器通过会话ID识别不同用户..

说说会话串号

- - 淘宝中间件团队博客
说起淘宝网用户串号,我的印象里技术bug原因的有两起. 2010年,这个串号持续的时间比较长,我估计应该存在几年时间了. 从淘宝的论坛里隔三差五会爆出案例来,xxx突然在访问我的淘宝页面时进入了别人家的账号,第一感觉是发现“所有已买到的,或者已卖出的商品”都不是自己的,并且可以对这些信息进行任意的操作,比如删除,下架.

HAproxy采用粘滞会话吗?

- - CSDN博客系统运维推荐文章
HAProxy是我们选用的世界一流的负载均衡器,每秒可处理250,000个连接及数万个请求. 不仅功能强大,而且经事实证明,它仍然非常灵活,有强大的记录及监控系统还有很多其它特点. 但是,同其它许多负载均衡器相同的是,HAproxy的主要特点也是:粘滞会话. 这一功能很有用,甚至对于某些系统来说,是必须的,如某些系统的网络服务器会话是不可移动的,即不可在网络服务器之间随机移动会话.

深入浅出Session攻击方式之一 – 固定会话ID

- - IT技术博客大学习
标签:   Session   会话. 随着php语言的流行,出现了无数的使用php开发的web应用程序,这吸引了大批的攻击者开始寻找,攻击有安全漏洞的php应用程序. 所以,程序的安全问题得到了越来越多的关注. 做为一个专业的php开发者,必须要重视安全问题. 接下来,我们来谈谈攻击session的方法之一 - 固定会话ID.

谁动了我的琴弦——会话劫持

- - CSDN博客推荐文章
谁动了我的琴弦——会话劫持. 让我们看一个最常见的例子——会话劫持,如图10-2所示. 如图10-2所示,受害者Alice正常的登录网站为www.buybook.com,此时她的Session ID是1234567,攻击者Bob通过网络嗅探获得了Alice的Session ID和Cookie中的用户登录信息,这样他就可以模仿Alice进行登录和操作了,而此时此刻Alice可能毫无所知.

apache安装、简单配置负载均衡和会话保持

- - ITeye博客
首先安装apache依赖的apr和apr-util. 1.下载(apr.apache.org/download.cgi)源文件, 如apr-1.5.1.tar.gz. 2.解压 tar -xzvf apr-1.5.1.tar.gz. 3.进入解压目录,依次执行. 4.下载(apr.apache.org/download.cgi)源文件, 如apr-util-1.5.4.tar.gz.

渗透测试:内网DNS投毒技术劫持会话

- - FreeBuf.COM
‍本文仅供渗透测试技术学习及教学用途,禁止非法使用‍. 最近一段时间一直在研究内网中嗅探的一些方法,各种方式的尝试,才找到一个比较靠谱的一种方式. 单一的ARP掉线也在10分钟内. 攻击机:Kali 10.10.10.237. 被攻击机: win7 10.10.10.232. 因为只为了测试,只修改了PC1的DNS.

利用arpspoof、tcpdump、ferret及hamster劫持登录会话

- - CSDN博客综合推荐文章
网关IP:192.168.1.1. 目标IP:192.168.1.6. 备注:所有的步骤中的命令都在同一目录下进行. 1、使用arpspoof进行APR欺骗. 2、使用tcpdump保存数据. 只有目标在你使用tcpdump保存数据期间,完完整整登录才行. (我这里是测试,所以我就自己在设备上登录了一个豆瓣的号).

关于Websphere 会话管理若干奇葩问题

- - 企业架构 - ITeye博客
      由于最近在做应用集成平台,即实现独立部署的WAR包可以在同一个集成平台中访问. 被集成的业务组件为什么可以在集成平台实现页面集成,主要通过以下几个步骤实现:.   ①用户登录集成平台系统;.   ②集成平台加载业务组件菜单,业务组件菜单的URL自动添加一个会话凭据,即会话token. 这样点击这个组件菜单,将向独立部署的业务组件服务发送页面请求;.

分布式会话跟踪系统架构设计与实践

- - 美团点评技术团队
本文整理自美团点评技术沙龙第08期:大规模集群的服务治理设计与实践. 美团点评技术沙龙由美团点评技术团队主办,每月一期. 每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域. 目前沙龙会分别在北京、上海和厦门等地举行,要参加下一次最新沙龙活动. 赶快关注微信公众号“美团点评技术团队”.