如何防范针对12306网站的恶意抢票插件

2015-06-28 15:42:27王雪峰王明哲朱建军
铁路计算机应用 2015年3期
关键词:订票购票车票

王雪峰,王明哲,朱建军,祝 捷

(1.北京经纬技术公司,北京 100081;2.中国铁道科学研究院 电子计算技术研究所,北京 100081;3.北京邮电大学 国际学院,北京 100876)

如何防范针对12306网站的恶意抢票插件

王雪峰1,王明哲2,朱建军2,祝 捷3

(1.北京经纬技术公司,北京 100081;2.中国铁道科学研究院 电子计算技术研究所,北京 100081;3.北京邮电大学 国际学院,北京 100876)

铁路12306网站在春运期间单日售票量突破500万张,12306网站已基本能够满足春运大量旅客同时购票的需求。但由于抢票插件的日渐盛行,围绕着售票公平性牵出了诸多话题。本文从验证码识别、用户行为分析、手机应用安全几个方面,阐述了如何防范抢票插件的恶意抢票行为。并结合实际给出了一些具体的解决方案。

验证码识别;行为分析;手机应用安全

随着中国高速铁路硬件的发展,铁路软件服务也应该与时俱进。铁路 12306 网站作为铁路信息化建设的一个重要组成部分,担负着方便旅客购票出行的重任。但每到春运,铁路的运能与广大旅客的购票需求就会产生极大的落差。正是基于这点,一些恶意的抢票软件应运而生,破坏购票的社会公平性。

本文从验证码识别技术、用户行为分析、以及手机应用安全等方面提出有针对性的防范措施。

1 抢票插件的工作原理

所谓的“抢票插件”其实就是可以提前收集用户信息以及购票信息,每隔一定的时间就自动发起一次查询车票的请求,一旦发现有票源,就会立即提交订票请求,代替缓慢的人工操作。

2 提高验证码识别的难度

验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意刷票、论坛灌水,有效地防止黑客对某一特定的注册用户用特定程序暴力破解方式进行不断的登陆尝试。验证码通常使用一些线条和一些不规则的字符组成,主要作用是为了防止一些黑客把密码进行数据化盗取。

12306 网站在登陆和提交订单时,都使用了验证码。如图1所示。

图1 12306网站验证码

现今验证码识别已经有了一些开源的工具,Tesseract-OCR 就是其中之一。经过测试对于数字和字母的识别率在 60% 左右。

如何提高验证码的强度。可以对生成好的验证码添加一些干扰线或者添加一些背景。如图2所示。

图2 带有背景和干扰线的验证码

最后一种是带有逻辑的汉字验证码,如图3所示。这种验证码对于计算机自动识别来说就变得很难了,首选要识别出图片上橙色的汉字。这种级别的验证码对于计算机来说就很难在短时间内识别出了,但人识别起来相对容易。

图3 带有逻辑的汉字验证码

3 根据用户行为分析增加行为逻辑控制

3.1 用户行为分析概念

用户行为分析,是指在获得网站访问量基本数据的情况下,对有关数据进行统计、分析,从中发现用户访问网站的规律,发现网站逻辑中可能存在的问题,为修正或重新制定网站逻辑策略提供依据。

3.1.1 防范短时间提交大量订票请求

通过对用户正常购票的日志分析,发现会有一些请求经常地调用异步验证码的有效性。因为验证码自动识别程序识别是有一定概率的,所以抢票插件就会不断地重试去调用验证验证码有效性的接口。当服务器验证通过后,抢票插件就会自动提交订票请求。由于请求是通过计算机多线程自动提交的,所以可以在短时间内提交大量有效的订票请求。对于此类问题,作者建议可以从以下几个方面进行控制。

(1)由于普通人看到验证码后到输入验证码,这个过程至少需要 2 s~3 s的时间,所以提交验证码认证必须延迟 3 s,否则直接返回非法操作。(2)验证码请求后,下一次获得必须等待 2 s,否则直接返回“请刷新”的图片。(3)在识别度不是太低的情况下,一个人连续输错3次验证码情况几乎不存在。所以在连续输入失败超过 3 次,直接封停 10 min,请用户等待 10 min 后再重新操作。(4)去掉异步验证验证码有效性这个接口,因为在提交订单的时候是要验证有效性的,该接口只是为了给用户提前显示验证码的对错,属于重复验证。但这个接口却会被抢票插件所利用,这样抢票插件就可以在提交订单之前重试出验证码的对错。(5)由于 CDN 是不能缓存验证码的,所以抢票插件可以通过不断地调用这个接口来测试不同节点的服务器的响应速度。抢票插件就可以通过响应速度最快的服务器进行订票,提高订票的成功率。

3.1.2 防范购票操作过快

12306 网站的正常购票流程如图 4 所示。

图4 12306网站购票流程

假定用户已经登陆了网站,首先要输入发到站和车次、点击查询、查到车次后点击预订、选择乘车人、输入验证码、最后是提交订票请求。通过日志统计数据的分析,可以发现每一步的平均需要的时间,网站在收到一次订票请求后,可以与前一次客户端与服务器交互的时间进行对比,如果时间小于普通用户操作的平均需要时间,那么就可以认为该次请求是由抢票插件发起的,可以直接返回非法操作,或者要求其再次重新输入一个新生成的验证码,验证通过后才可以继续订票。

3.1.3 防范查询余票过于频繁

当 12306 网站定点放票时,抢票软件抢到的车票毕竟是有限的。如果在定点放票时没有抢到车票,抢票插件会按照一定的时间间隔去频繁查询网站余票,相当于对网站的余票进行实时监控。由于会有旅客不定时地退订车票,抢票软件如果刷到车票就会立即发起订票请求,以便能“捡漏”到零散的车票。

对于此类问题,如果一名普通用户手工刷新网站的余票,5 s钟查询一次是比较合理的请求。但如果是抢票软件就可以在短时间内发起大量的查询请求,比如 1 s 查询 5 次,对于这种频率的查询请求,就可以认定为不合理的查询请求。如果服务器发现2次查询请求间隔时间小于 5 s,那么第 2 次查询请求就可以直接返回一个空的结果集。这样就可以有效地避免抢票软件短时间内频繁刷新的问题了。

3.2 通过业务逻辑限制抢票行为

新版本的 12306 采用了通过公安系统对身份证的真实性进行验证。但依然存在非法占票的可能,例如:收集一些真实的身份信息,如果新添加的乘车人之前在 12306 网站购买过车票,那么就可以通过有效性验证。如果该乘车人之前没有在 12306 网站买过火车票,那么就会通过公安系统进行验证。

可以有效地避免利用虚假的身份信息进行非法囤票,但该方式仍然存在囤票的可能,假如有 20个账户,每个账户 30个常用联系人,常用联系人都是实名验证通过的,那么一次性就可以囤积 600 张火车票,对于热门车次来说 600 张已经占了比较大的比例。所以还需要配合验证码和用户行为分析才能从根本上解决这个问题。

4 提高手机端应用购票的安全性

12306 也推出了手机端的应用程序,手机应用程序通过调用远程服务器封装好的接口进行正常的购票业务逻辑。因为接口是直接开放的,所以就需要对调用接口的客户端进行授权验证,只有通过授权的手机应用程序才能调用远程接口。

(1)要防止手机软件被抓包,例如:可以借鉴支付宝钱包手机应用程序,当发现手机的网络设置中使用了代理连接,那么当用户使用软件的时候就直接提示手机网络有代理,请去掉代理后再使用本程序。这样就能防止类似 fiddler等工具进行抓包。如果应用不会被抓包,那么就基本不可能模拟出有效的订票请求。

(2)使用 HTTPS 通信方式进行手机应用和服务器端的通信,因为 HTTPS如果没有密钥是无法进行解析的,可以从通信角度提高手机应用的安全性。

(3)可以对手机应用程序的代码进行混淆,混淆后的代码即使被反编译了,对于破解的人来说也是非常难读懂的,或者说是基本不可能读懂。

5 结束语

结合上述内容,总结了以下几点防范抢票插件的原则:

(1)完全禁止抢票插件的存在是几乎不可能的,但只要抢票插件的行为符合 12306 网站的购票规则,那么就可以允许此类的抢票插件存在。不管是抢票插件还是人工操作都是建立在一个购票公平的原则上。(2)单一的防范措施是无法禁止恶意抢票行为的,并且每种防范措施都有其局限性,只有将验证码技术,用户行为分析技术相结合,配合使用才能有效地制止恶意抢票行为。(3)保证信息安全是一个持续的、相对的过程,也许某种防范错误在当前有效,但不代表会一直长期有效,因为信息安全本身就是一个博弈的过程。所以只有不断地发掘和实践最前沿的技术才能在防范抢票的过程中占主导地位。

[1] 文晓阳 ,高 能 ,夏鲁宁 ,荆继武.高效的验证码识别技术与验证码分类思想 [J].计算机工程,2009(8).

[2] 吕 刚.带干扰的验证码识别研究 [D].杭州:浙江工业大学,2009.

[3] 许 明.验证码的识别与反识别 [D].南京:南京理工大学,2007.

[4] 董富强.网络用户行为分析研究及其应用 [D].西安:西安电子科技大学,2005.

[5] 杨 斌.基于分布式方法的用户行为分析系统的设计与实现[D].北京:北京邮电大学,2013.

[6] Rafael F,Christian B,Christoph K,et al.Android OS Security: Risks and Limitations[R]. AISEC Technical Reports, AISEC-TR-2012 -001. 2012.

[7] 刘建奇 ,王以刚.智能手机信息安全防范系统设计与研究 [J].信息安全与通信保密,2007(2).

责任编辑 徐侃春

How to prevent malicious rob ticket plug to 12306 website

WANG Xuefeng1, WANG Mingzhe2, ZHU Jianjun2, ZHU Jie3
( 1.Beijing Jingwei Information Technology Co Ltd, Beijing 100081, China; 2. Institute of Computing Technologies, China Academy of Railway Sciences, Beijing 100081, China; 3. Internal School, Beijing University of Post and Telecommunication, Beijing 100876, China )

One-day ticket quantity at the railway 12306 website was broken through 5 millions during the Spring Festival. The 12306 website could be able to meet a large quantity of ticketing demands during the Spring Festival. Because the ticket to plug-in was becoming more prevalent, around the ticket fairness pulled many topics. This article analyzed the verif i cation code identif i cation, user behavior analysis, mobile phone application security, expounded how to prevent malicious rob ticket plug behavior, given some specif i c solutions.

verif i cation code identif i cation; behavior analysis; mobile phone application security

U293.22∶TP39

: A

1005-8451(2015)03-0026-03

2014-09-28

王雪峰,工程师;王明哲,副研究员。

猜你喜欢
订票购票车票
不同的购票方法
找车票
直击痛点的“候补购票”可多来一些
铁路候补购票服务扩大到全部列车
航空订票恶意行为检测方法
电子测试(2018年15期)2018-09-26 06:01:22
请出示车票
共有多少种车票
订票姑娘
商界(2017年3期)2017-03-14 17:07:40
送别诗
滇池(2014年5期)2014-05-29 07:31:43
稍安勿躁