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