王雪峰,王明哲,朱建軍,祝 捷
(1.北京經(jīng)緯技術(shù)公司,北京 100081;2.中國鐵道科學(xué)研究院 電子計算技術(shù)研究所,北京 100081;3.北京郵電大學(xué) 國際學(xué)院,北京 100876)
如何防范針對12306網(wǎng)站的惡意搶票插件
王雪峰1,王明哲2,朱建軍2,祝 捷3
(1.北京經(jīng)緯技術(shù)公司,北京 100081;2.中國鐵道科學(xué)研究院 電子計算技術(shù)研究所,北京 100081;3.北京郵電大學(xué) 國際學(xué)院,北京 100876)
鐵路12306網(wǎng)站在春運(yùn)期間單日售票量突破500萬張,12306網(wǎng)站已基本能夠滿足春運(yùn)大量旅客同時購票的需求。但由于搶票插件的日漸盛行,圍繞著售票公平性牽出了諸多話題。本文從驗證碼識別、用戶行為分析、手機(jī)應(yīng)用安全幾個方面,闡述了如何防范搶票插件的惡意搶票行為。并結(jié)合實際給出了一些具體的解決方案。
驗證碼識別;行為分析;手機(jī)應(yīng)用安全
隨著中國高速鐵路硬件的發(fā)展,鐵路軟件服務(wù)也應(yīng)該與時俱進(jìn)。鐵路 12306 網(wǎng)站作為鐵路信息化建設(shè)的一個重要組成部分,擔(dān)負(fù)著方便旅客購票出行的重任。但每到春運(yùn),鐵路的運(yùn)能與廣大旅客的購票需求就會產(chǎn)生極大的落差。正是基于這點,一些惡意的搶票軟件應(yīng)運(yùn)而生,破壞購票的社會公平性。
本文從驗證碼識別技術(shù)、用戶行為分析、以及手機(jī)應(yīng)用安全等方面提出有針對性的防范措施。
所謂的“搶票插件”其實就是可以提前收集用戶信息以及購票信息,每隔一定的時間就自動發(fā)起一次查詢車票的請求,一旦發(fā)現(xiàn)有票源,就會立即提交訂票請求,代替緩慢的人工操作。
驗證碼(CAPTCHA)是一種區(qū)分用戶是計算機(jī)還是人的公共全自動程序??梢苑乐梗簮阂馑⑵?、論壇灌水,有效地防止黑客對某一特定的注冊用戶用特定程序暴力破解方式進(jìn)行不斷的登陸嘗試。驗證碼通常使用一些線條和一些不規(guī)則的字符組成,主要作用是為了防止一些黑客把密碼進(jìn)行數(shù)據(jù)化盜取。
12306 網(wǎng)站在登陸和提交訂單時,都使用了驗證碼。如圖1所示。
圖1 12306網(wǎng)站驗證碼
現(xiàn)今驗證碼識別已經(jīng)有了一些開源的工具,Tesseract-OCR 就是其中之一。經(jīng)過測試對于數(shù)字和字母的識別率在 60% 左右。
如何提高驗證碼的強(qiáng)度??梢詫ι珊玫尿炞C碼添加一些干擾線或者添加一些背景。如圖2所示。
圖2 帶有背景和干擾線的驗證碼
最后一種是帶有邏輯的漢字驗證碼,如圖3所示。這種驗證碼對于計算機(jī)自動識別來說就變得很難了,首選要識別出圖片上橙色的漢字。這種級別的驗證碼對于計算機(jī)來說就很難在短時間內(nèi)識別出了,但人識別起來相對容易。
圖3 帶有邏輯的漢字驗證碼
3.1 用戶行為分析概念
用戶行為分析,是指在獲得網(wǎng)站訪問量基本數(shù)據(jù)的情況下,對有關(guān)數(shù)據(jù)進(jìn)行統(tǒng)計、分析,從中發(fā)現(xiàn)用戶訪問網(wǎng)站的規(guī)律,發(fā)現(xiàn)網(wǎng)站邏輯中可能存在的問題,為修正或重新制定網(wǎng)站邏輯策略提供依據(jù)。
3.1.1 防范短時間提交大量訂票請求
通過對用戶正常購票的日志分析,發(fā)現(xiàn)會有一些請求經(jīng)常地調(diào)用異步驗證碼的有效性。因為驗證碼自動識別程序識別是有一定概率的,所以搶票插件就會不斷地重試去調(diào)用驗證驗證碼有效性的接口。當(dāng)服務(wù)器驗證通過后,搶票插件就會自動提交訂票請求。由于請求是通過計算機(jī)多線程自動提交的,所以可以在短時間內(nèi)提交大量有效的訂票請求。對于此類問題,作者建議可以從以下幾個方面進(jìn)行控制。
(1)由于普通人看到驗證碼后到輸入驗證碼,這個過程至少需要 2 s~3 s的時間,所以提交驗證碼認(rèn)證必須延遲 3 s,否則直接返回非法操作。(2)驗證碼請求后,下一次獲得必須等待 2 s,否則直接返回“請刷新”的圖片。(3)在識別度不是太低的情況下,一個人連續(xù)輸錯3次驗證碼情況幾乎不存在。所以在連續(xù)輸入失敗超過 3 次,直接封停 10 min,請用戶等待 10 min 后再重新操作。(4)去掉異步驗證驗證碼有效性這個接口,因為在提交訂單的時候是要驗證有效性的,該接口只是為了給用戶提前顯示驗證碼的對錯,屬于重復(fù)驗證。但這個接口卻會被搶票插件所利用,這樣搶票插件就可以在提交訂單之前重試出驗證碼的對錯。(5)由于 CDN 是不能緩存驗證碼的,所以搶票插件可以通過不斷地調(diào)用這個接口來測試不同節(jié)點的服務(wù)器的響應(yīng)速度。搶票插件就可以通過響應(yīng)速度最快的服務(wù)器進(jìn)行訂票,提高訂票的成功率。
3.1.2 防范購票操作過快
12306 網(wǎng)站的正常購票流程如圖 4 所示。
圖4 12306網(wǎng)站購票流程
假定用戶已經(jīng)登陸了網(wǎng)站,首先要輸入發(fā)到站和車次、點擊查詢、查到車次后點擊預(yù)訂、選擇乘車人、輸入驗證碼、最后是提交訂票請求。通過日志統(tǒng)計數(shù)據(jù)的分析,可以發(fā)現(xiàn)每一步的平均需要的時間,網(wǎng)站在收到一次訂票請求后,可以與前一次客戶端與服務(wù)器交互的時間進(jìn)行對比,如果時間小于普通用戶操作的平均需要時間,那么就可以認(rèn)為該次請求是由搶票插件發(fā)起的,可以直接返回非法操作,或者要求其再次重新輸入一個新生成的驗證碼,驗證通過后才可以繼續(xù)訂票。
3.1.3 防范查詢余票過于頻繁
當(dāng) 12306 網(wǎng)站定點放票時,搶票軟件搶到的車票畢竟是有限的。如果在定點放票時沒有搶到車票,搶票插件會按照一定的時間間隔去頻繁查詢網(wǎng)站余票,相當(dāng)于對網(wǎng)站的余票進(jìn)行實時監(jiān)控。由于會有旅客不定時地退訂車票,搶票軟件如果刷到車票就會立即發(fā)起訂票請求,以便能“撿漏”到零散的車票。
對于此類問題,如果一名普通用戶手工刷新網(wǎng)站的余票,5 s鐘查詢一次是比較合理的請求。但如果是搶票軟件就可以在短時間內(nèi)發(fā)起大量的查詢請求,比如 1 s 查詢 5 次,對于這種頻率的查詢請求,就可以認(rèn)定為不合理的查詢請求。如果服務(wù)器發(fā)現(xiàn)2次查詢請求間隔時間小于 5 s,那么第 2 次查詢請求就可以直接返回一個空的結(jié)果集。這樣就可以有效地避免搶票軟件短時間內(nèi)頻繁刷新的問題了。
3.2 通過業(yè)務(wù)邏輯限制搶票行為
新版本的 12306 采用了通過公安系統(tǒng)對身份證的真實性進(jìn)行驗證。但依然存在非法占票的可能,例如:收集一些真實的身份信息,如果新添加的乘車人之前在 12306 網(wǎng)站購買過車票,那么就可以通過有效性驗證。如果該乘車人之前沒有在 12306 網(wǎng)站買過火車票,那么就會通過公安系統(tǒng)進(jìn)行驗證。
可以有效地避免利用虛假的身份信息進(jìn)行非法囤票,但該方式仍然存在囤票的可能,假如有 20個賬戶,每個賬戶 30個常用聯(lián)系人,常用聯(lián)系人都是實名驗證通過的,那么一次性就可以囤積 600 張火車票,對于熱門車次來說 600 張已經(jīng)占了比較大的比例。所以還需要配合驗證碼和用戶行為分析才能從根本上解決這個問題。
12306 也推出了手機(jī)端的應(yīng)用程序,手機(jī)應(yīng)用程序通過調(diào)用遠(yuǎn)程服務(wù)器封裝好的接口進(jìn)行正常的購票業(yè)務(wù)邏輯。因為接口是直接開放的,所以就需要對調(diào)用接口的客戶端進(jìn)行授權(quán)驗證,只有通過授權(quán)的手機(jī)應(yīng)用程序才能調(diào)用遠(yuǎn)程接口。
(1)要防止手機(jī)軟件被抓包,例如:可以借鑒支付寶錢包手機(jī)應(yīng)用程序,當(dāng)發(fā)現(xiàn)手機(jī)的網(wǎng)絡(luò)設(shè)置中使用了代理連接,那么當(dāng)用戶使用軟件的時候就直接提示手機(jī)網(wǎng)絡(luò)有代理,請去掉代理后再使用本程序。這樣就能防止類似 fiddler等工具進(jìn)行抓包。如果應(yīng)用不會被抓包,那么就基本不可能模擬出有效的訂票請求。
(2)使用 HTTPS 通信方式進(jìn)行手機(jī)應(yīng)用和服務(wù)器端的通信,因為 HTTPS如果沒有密鑰是無法進(jìn)行解析的,可以從通信角度提高手機(jī)應(yīng)用的安全性。
(3)可以對手機(jī)應(yīng)用程序的代碼進(jìn)行混淆,混淆后的代碼即使被反編譯了,對于破解的人來說也是非常難讀懂的,或者說是基本不可能讀懂。
結(jié)合上述內(nèi)容,總結(jié)了以下幾點防范搶票插件的原則:
(1)完全禁止搶票插件的存在是幾乎不可能的,但只要搶票插件的行為符合 12306 網(wǎng)站的購票規(guī)則,那么就可以允許此類的搶票插件存在。不管是搶票插件還是人工操作都是建立在一個購票公平的原則上。(2)單一的防范措施是無法禁止惡意搶票行為的,并且每種防范措施都有其局限性,只有將驗證碼技術(shù),用戶行為分析技術(shù)相結(jié)合,配合使用才能有效地制止惡意搶票行為。(3)保證信息安全是一個持續(xù)的、相對的過程,也許某種防范錯誤在當(dāng)前有效,但不代表會一直長期有效,因為信息安全本身就是一個博弈的過程。所以只有不斷地發(fā)掘和實踐最前沿的技術(shù)才能在防范搶票的過程中占主導(dǎo)地位。
[1] 文曉陽 ,高 能 ,夏魯寧 ,荊繼武.高效的驗證碼識別技術(shù)與驗證碼分類思想 [J].計算機(jī)工程,2009(8).
[2] 呂 剛.帶干擾的驗證碼識別研究 [D].杭州:浙江工業(yè)大學(xué),2009.
[3] 許 明.驗證碼的識別與反識別 [D].南京:南京理工大學(xué),2007.
[4] 董富強(qiáng).網(wǎng)絡(luò)用戶行為分析研究及其應(yīng)用 [D].西安:西安電子科技大學(xué),2005.
[5] 楊 斌.基于分布式方法的用戶行為分析系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),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ī)信息安全防范系統(tǒng)設(shè)計與研究 [J].信息安全與通信保密,2007(2).
責(zé)任編輯 徐侃春
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
王雪峰,工程師;王明哲,副研究員。