12306再次陷入危机,网友发起开源项目

中秋国庆难得八天长假,有人想要回家与亲人团聚,有人想要举家出游。每当长假,买火车票总是大家津津乐道的话题。回想今年春节前夕,铁道部12306购票网站的性能问题仍历历在目,众多网友献计献策,时隔几月,12306再次陷入重重危机,3亿多的天价疑云暂且不论,网站的漏洞层出不穷,页面频现完整错误堆栈,如此“豆腐渣工程”引起广大程序员的热议。

截止到9月底,在国内知名安全网站乌云上与12306有关的漏洞就已经不少了,比如9月18日的“中国铁路订票系统(12306.cn)修改任意用户密码”就让人捏了一把冷汗,而9月27日提交的“12306漏洞一包裹”,通过曹政的一条微博更是引起了激烈的讨论。该漏洞的简要描述中这样写道:

XSS、绝对路径泄漏、SQL注入(分站有个注入,好几亿的项目,没敢跑库,跑坏了赔不起.......)

而曹政微博中给出的截图更让人瞠目结舌,直接将Spring Framework中的DataIntegrityViolation错误堆栈打在生产系统的页面里,其中还给出了具体的SQL语句,在生产系统中将错误堆栈直接呈现给用户的作法实在欠妥:

select * from TB_INFO_CLCS where flag = 'Y'  and czdm = 'G' and ziz like '%6'%' order by cxdm 

酷壳博主陈皓表示虽然这条SQL用了like,性能不理想,但是推测该表是字典表,也就几十条记录,问题没有网友想象的这么大。在网上还流传着不少NullPointerException和NoSuchMethodException,比如现在还可以访问该错误页面。

弯曲评论上转发了一篇对于12306后台技术框架及异常堆栈信息的分析,文中不仅给出了超长的完整错误堆栈,还指出12306使用了如下设施:

  • 数据库:Oracle
  • 应用服务器:WebLogic
  • 开发框架:Spring\Hibernate\Struts
  • 连接池:C3P0

通过页面源代码还发现,网站上的CSS和JS文件居然放在同一个目录之中,这种做法让人感觉有些难以置信。

虽然12306的问题如此之多,也有网友提到12306的根本问题不在技术上,但还是有很多人纷纷表示希望通过社区的力量来帮助铁道部,让大家买票的道路更加顺畅。京东商城副总裁李大学通过微博表示:

为了程序猿们可以顺利在12306预订到火车票,我提议成立12306NG开源项目组。有兴趣参加的请转起来!我负责筹资并以一个程序猿老兵名义奉献不止•••

随后,12306NG开源项目组正式成立,在其官方论坛中通报了项目的进展情况:

在大家的支持下,目前本项目进展顺利:
1、已吸纳牛人10多枚,涵盖数据库、大并发、高性能、分布式架构等多领域。将逐步与大家公布。
2、项目范围日渐清晰,技术框架渐显眉目。

论坛中讨论气氛浓烈,有人从软硬件上给出建议,也有人认为主要的麻烦在于IO,还有人从项目实施方面提出自己的看法。大家都指出,铁路购票系统与普通的电商和互联网网站有着很大的区别,其复杂度也远高于它们,所以不能简单地照搬那些网站的成功经验。

如果您也希望为12306NG项目贡献自己的一份力量,不妨关注其官方微博。期待在2013年春运之时,12306在性能和稳定性方面能有所改善,让大家都能买到回家的车票。

你可能感兴趣的:(12306再次陷入危机,网友发起开源项目)