肖卓明,陳寧
?
網(wǎng)絡(luò)投票防刷票技術(shù)探討
肖卓明1,陳寧2
(1.南方報(bào)業(yè)傳媒集團(tuán),廣東 廣州 510601;2.廣東省婦幼保健院,廣東 廣州 510010)
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展以及移動(dòng)社交軟件的風(fēng)靡,越來越多的組織通過網(wǎng)絡(luò)投票來進(jìn)行評(píng)選活動(dòng)?;ヂ?lián)網(wǎng)投票作為一種開放的投票形式,具備傳統(tǒng)投票模式所不具備的獨(dú)特優(yōu)勢(shì)。同時(shí),由于互聯(lián)網(wǎng)的開放性,在線投票更容易受到不可預(yù)知問題的影響,而刷票行為更是困擾互聯(lián)網(wǎng)投票的一個(gè)重要問題。惡意刷票可以對(duì)投票結(jié)果產(chǎn)生決定性的影響,左右真實(shí)的投票結(jié)果。如何抑制刷票、維護(hù)投票的公正公平,是眾多投票組織者迫切關(guān)心的問題。試圖對(duì)網(wǎng)絡(luò)投票刷票、防刷票技術(shù)進(jìn)行分析,拋磚引玉供大家在實(shí)際應(yīng)用中參考。
網(wǎng)絡(luò)投票;網(wǎng)絡(luò)刷票;防刷票技術(shù);非技術(shù)手段
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展以及移動(dòng)社交軟件的風(fēng)靡,越來越多的組織通過網(wǎng)絡(luò)投票來進(jìn)行評(píng)選。網(wǎng)絡(luò)投票因其廣泛性、智能性、靈活性、覆蓋面廣、影響力大、成本低以及不受時(shí)間和地域限制等獨(dú)特優(yōu)勢(shì),而越來越受到評(píng)選組織者的歡迎。網(wǎng)絡(luò)投票流行的同時(shí),也催生了另一塊互聯(lián)網(wǎng)業(yè)務(wù)——網(wǎng)絡(luò)刷票。各種評(píng)選活動(dòng)通過網(wǎng)絡(luò)投票實(shí)現(xiàn),評(píng)選各方也越來越重視網(wǎng)絡(luò)投票的結(jié)果。網(wǎng)絡(luò)刷票逐步呈現(xiàn)出公司化、組織化的特點(diǎn),越來越讓人防不勝防。網(wǎng)絡(luò)刷票讓各式各樣網(wǎng)絡(luò)評(píng)選活動(dòng)的公平性、公正性受到很大的質(zhì)疑。更有甚者,頻繁的刷票行為可以直接使投票服務(wù)器達(dá)到并發(fā)上限而導(dǎo)致正常的投票行為不能開展。如何將刷票的影響控制在最小范圍內(nèi),是網(wǎng)絡(luò)投票主辦方急需解決的問題。通過技術(shù)手段,提高刷票成本,可以在一定程度上控制刷票的影響范圍。投票與刷票,刷票與防刷票,就像兩對(duì)冤家。在相關(guān)利益的驅(qū)動(dòng)下,有投票就必然有刷票,有刷票必然會(huì)推動(dòng)防刷票技術(shù)發(fā)展。防刷票,主要是通過技術(shù)手段來限制每個(gè)用戶的投票數(shù),控制用戶的重復(fù)投票行為,盡量使投票處于一種相對(duì)公平公正的環(huán)境中。
網(wǎng)絡(luò)刷票分為人工刷票和程序刷票。人工刷票單從技術(shù)角度來防范基本上無法實(shí)現(xiàn),因?yàn)槿斯に⑵本褪钦鎸?shí)的人在投票,沒有辦法區(qū)別哪些是正常投票哪些是人工刷票,所以我們僅對(duì)利用程序刷票的行為進(jìn)行探討。
程序刷票最初是通過抓包工具,抓取投票頁面URL,分析請(qǐng)求的參數(shù),然后通過編寫腳本程序,模擬正常的請(qǐng)求,自動(dòng)批量發(fā)送投票請(qǐng)求。投票系統(tǒng)做了IP限制和單用戶請(qǐng)求頻次限制后,模擬自動(dòng)批量發(fā)送投票請(qǐng)求失效,這時(shí)刷票機(jī)構(gòu)可以通過一批肉機(jī),或通過動(dòng)態(tài)代理工具,偽造不同的IP請(qǐng)求,繞過系統(tǒng)限制。更高級(jí)別的刷票系統(tǒng)可以模擬用戶注冊(cè)、登錄、瀏覽、投票等操作,最大程度上讓投票系統(tǒng)認(rèn)為這是真實(shí)的用戶操作,從而達(dá)到刷票的目的。
刷票行為讓各種網(wǎng)絡(luò)評(píng)選的公平公正受到質(zhì)疑,防刷票技術(shù)手段主要有以下幾種。
Cookie是保存在客戶端的用戶信息,在瀏覽器首次訪問服務(wù)器時(shí)由服務(wù)器創(chuàng)建并發(fā)給客戶端,瀏覽器收到Cookie后會(huì)根據(jù)Cookie時(shí)效,選擇將Cookie內(nèi)容保存在內(nèi)存或硬盤,當(dāng)瀏覽器再次訪問服務(wù)器時(shí)會(huì)在請(qǐng)求中攜帶之前的Cookie.Cookie機(jī)制是在客戶端保持狀態(tài)的方案,在實(shí)際應(yīng)用中,可以對(duì)用戶的每次投票進(jìn)行Cookie記錄,再次投票時(shí)檢測發(fā)現(xiàn)Cookie中已經(jīng)存在投票記錄則禁止投票。由于Cookie信息保存于客戶端之中,所以只要在客戶端清除掉Cookie信息,或在客戶端偽造Cookie信息,則又可以繞過這種限制進(jìn)行刷票。該方法只能限制極少數(shù)人進(jìn)行刷票,無法應(yīng)用在安全性要求比較高的場合。
Session 是保存在服務(wù)端的用戶信息,服務(wù)器為每個(gè)會(huì)話創(chuàng)建一個(gè)Session,Session里面可以保存用戶信息,通過以Cookie的方式發(fā)送Session ID 給客戶端作為標(biāo)識(shí)來識(shí)別用戶。Session機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案,客戶端無法篡改Session變量,所以可以利用Session設(shè)置變量記錄是否投過票,投票時(shí)先檢查Session變量,從而達(dá)到防刷票的目的。但是關(guān)閉瀏覽器,Session就會(huì)被銷毀,客戶端禁用Cookie,Session也會(huì)失效。所以,用戶只要不斷啟動(dòng)多個(gè)瀏覽器窗口即可進(jìn)行多次投票,或者直接用定制軟件發(fā)送http請(qǐng)求進(jìn)行刷票。
這是使用比較廣泛的一種刷票限制方式,通過獲取并記錄投票用戶的IP地址,用戶投票時(shí)先對(duì)客戶端IP地址進(jìn)行對(duì)比判斷,根據(jù)IP地址是否重合來限制其在一段時(shí)間內(nèi)所能投票的票數(shù)。同時(shí),IP限制也可用于投票地區(qū)限制,通過匹配IP地區(qū)來限制只有在某個(gè)地區(qū)的用戶才能投票。這個(gè)方法可以很好地限制那些正常訪問投票的用戶,但是對(duì)于ADSL用戶來說,可以通過斷線重?fù)軄砀鼡QIP地址。另外,使用代理訪問的用戶,由于無法獲取其真實(shí)的IP地址,只能獲得代理服務(wù)器的IP地址,所以如果利用動(dòng)態(tài)代理工具,可以更加輕松地繞過這一限制。
限制游客的投票權(quán)限,每個(gè)用戶必須注冊(cè)了賬戶登錄后才能進(jìn)行投票,并通過限制每個(gè)賬戶ID的投票數(shù)來減少刷票。同時(shí)可以限制初始注冊(cè)用戶,注冊(cè)一段時(shí)間后才可以參與投票,還可以通過限制用戶注冊(cè)數(shù)量來進(jìn)一步進(jìn)行限制。也可以通過設(shè)置注冊(cè)用戶時(shí)的復(fù)雜度來加大刷票的難度,例如注冊(cè)用戶時(shí)加入手機(jī)短信驗(yàn)證碼等。
針對(duì)刷票軟件,投票時(shí)增加文字驗(yàn)證碼、圖片驗(yàn)證碼、問題驗(yàn)證碼、手機(jī)短信驗(yàn)證碼、Email驗(yàn)證碼、滑塊驗(yàn)證等,可以通過驗(yàn)證碼復(fù)雜度和識(shí)別難度的控制來過濾一部分刷票機(jī),從而減少刷票的發(fā)生。比如12306的圖形驗(yàn)證碼,就是該方法的其中一種應(yīng)用模式。驗(yàn)證碼的使用同時(shí)也加大了正常用戶的投票難度,而且刷票頻繁訪問驗(yàn)證碼,也會(huì)加大服務(wù)器負(fù)擔(dān)。
每次投票前,用戶都需要在其他頁面或是郵箱先獲取一個(gè)唯一的投票碼,使用一次后即作廢。同一用戶再次進(jìn)行投票時(shí),只要驗(yàn)證該用戶是否已經(jīng)獲取過投票碼,即可對(duì)重復(fù)投票進(jìn)行限制。這種方法可以極大程度上降低刷票軟件的有效性。
Web應(yīng)用防火墻(簡稱“WAF”)本來應(yīng)用于Web服務(wù)器安全,因?yàn)樗⑵毙袨榕c網(wǎng)絡(luò)攻擊存在一定相似性,所以利用WAF也可以在一定程度上抑制刷票行為。利用WAF的訪問控制、反向代理、增強(qiáng)輸入驗(yàn)證、狀態(tài)管理、異常檢測等模塊,通過適當(dāng)?shù)囊?guī)則配置,可以過濾掉那些不符合正常規(guī)則的投票請(qǐng)求,達(dá)到過濾刷票請(qǐng)求的目的。
通過抓包軟件,可以獲取投票系統(tǒng)的投票接口,進(jìn)而通過反復(fù)調(diào)用投票接口來實(shí)現(xiàn)刷票。因此,對(duì)投票接口的保護(hù),可以給投票接口增加隨機(jī)參數(shù),每個(gè)隨機(jī)參數(shù)使用過后即作廢,過濾掉簡單的重復(fù)調(diào)用,增加刷票的難度。
MAC網(wǎng)卡的物理地址是唯一的,通過網(wǎng)卡的MAC地址在服務(wù)器端進(jìn)行投票限制,也是一種可行的辦法。但是現(xiàn)在大多數(shù)網(wǎng)絡(luò)投票都是基于Web開發(fā)的,作為Web程序很難獲取真實(shí)的MAC地址,因?yàn)樽x取客戶端MAC時(shí),讀取的是存儲(chǔ)于注冊(cè)表的一個(gè)信息,它是可以修改的,很多軟件都能夠制造偽MAC地址,所以MAC地址限制也是可以破解的。
最近幾年,隨著微信用戶數(shù)的不斷增長,越來越多的網(wǎng)絡(luò)投票基于微信開發(fā)平臺(tái)來實(shí)現(xiàn),而微信平臺(tái)的社交屬性可以讓網(wǎng)絡(luò)投票得到更大范圍傳播。基于微信開發(fā)平臺(tái)的網(wǎng)絡(luò)投票同樣面臨刷票問題,基于微信開發(fā)平臺(tái)的防刷票技術(shù)又有其獨(dú)特性:①Openid驗(yàn)證。Openid是加密后的微信號(hào),每個(gè)用戶對(duì)每個(gè)公眾號(hào)的Openid是唯一的,可以通過Openid來判斷一個(gè)用戶是否已經(jīng)投過票,以此來限制同一個(gè)微信用戶重復(fù)投票。②限制關(guān)注公眾號(hào)才能投票。在投票時(shí)通過微信接口先判斷用戶有沒有關(guān)注公眾號(hào),沒有關(guān)注則跳轉(zhuǎn)至關(guān)注頁面,此方法可以防止沒有關(guān)注公眾號(hào)的“僵尸用戶”刷票。③判斷上一級(jí)頁面。通過http請(qǐng)求header中的referer變量,判斷投票操作的上級(jí)頁面,可以防止直接發(fā)送請(qǐng)求來進(jìn)行投票的部分自動(dòng)投票軟件。④判斷是否在微信客戶端上操作。通過請(qǐng)求頭部信息中的agent變量來判斷是否在微信客戶端中打開投票頁面。拒絕非微信客戶端上的請(qǐng)求,以防止部分自動(dòng)投票軟件。
道高一尺,魔高一丈。在網(wǎng)絡(luò)刷票已呈公司化、組織化運(yùn)作的背景下,僅憑技術(shù)手段基本上沒有辦法杜絕刷票行為,利用技術(shù)限制雖然可以限制一些刷票軟件的使用,卻無法避免人工刷票行為。但是提高刷票成本,從另一個(gè)角度來看,也可以降低刷票意愿。通過開放投票時(shí)間段、降低網(wǎng)絡(luò)投票權(quán)重等非技術(shù)手段,結(jié)合防刷票技術(shù)將刷票行為的影響降到最低,也許是網(wǎng)絡(luò)投票活動(dòng)中的最優(yōu)解決方案。
[1]吳三柱.在線投票系統(tǒng)中防刷票技術(shù)研究[J].價(jià)值工程,2018,37(22):203-204.
[2]張國欽.網(wǎng)絡(luò)投票系統(tǒng)中防刷票功能的設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2016,32(12):102,132.
2095-6835(2018)20-0064-02
TP393.09
A
10.15913/j.cnki.kjycx.2018.20.064
肖卓明(1981—),男,研究方向?yàn)閿?shù)據(jù)庫設(shè)計(jì)、網(wǎng)絡(luò)應(yīng)用。陳寧(1981—),男,研究方向?yàn)榫W(wǎng)絡(luò)信息安全。
〔編輯:嚴(yán)麗琴〕