防刷票思考

刷票行爲,一直以來都是個難題,沒法從根本上防止。算法

可是咱們能夠儘可能減小刷票的傷害,好比:經過人爲增長的邏輯限制。服務器

基於 PHP,下面介紹防刷票的一些技巧:curl

一、HTTP_REFERER : 校驗 $_SERVER['HTTP_REFERER']。可僞造,使用 CURL異步

curl_setopt($ch, CURLOPT_REFERER, 'HTTP://www.baidu.com');(攻擊手段)

二、IP限制:加上 IP 投票限制。可僞造,使用 CURL加密

$ip = ***.***.***.***;
$header = array(
    "CLIENT-IP:{$ip}",
    "X-FORWARDED-FOR:{$ip}",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);(攻擊手段)

三、User-Agent:校驗 $_SERVER['HTTP_USER_AGENT']。可僞造,使用 CURLurl

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");(攻擊手段)

四、驗證碼:採用很是複雜的驗證碼,能夠防止一些菜鳥攻擊者。code

a:可是專業刷票機能夠攻破。若是不用驗證碼,投票基本就歇菜了。

b:驗證碼獲取方式,採用異步加載,即點擊輸入框時,纔去請求。

c:投票成功後,刪除驗證碼的 Session。

五、登陸:用戶必須登陸才能投票。ip

a:能夠攻破,寫程序不斷註冊新用戶,而後用來投票。(攻擊手段)

b:指定大於某個 UID 的用戶,或者某段時間內活躍的用戶,才能進行投票。(預防對策)

六、限時投票:投票程序,只在某個時間段內開放。不然,對方半夜刷票,你咋辦?io

a:從 早 8 點 至 晚 23 點。(預防對策)

七、投票間隔:用戶投票後,須要隔多長時間才能繼續投。驗證碼

a:不少投票站點基本上都有這個限制,可是對於更改 IP的攻擊,就沒辦法了。

b:針對 UID 限制,能夠有效防止攻擊,可是可使用批量註冊馬甲用戶。

八、投票結果展現:延遲展現,友好展現。

a:頁面上投票,JS 立馬加1,可是刷新頁面,不必定立馬展現最新投票結果。

b:返回狀態給頁面(感謝您的投票!或者 投票成功!至於有沒有成功,另說了!)

九、補票邏輯:常見於一些軟件評選之類的投票。

a:有時候軟件廠商會爲了讓本身的票數高一點,會私下給活動舉辦商 $,後臺進行補票。

b:後臺跑腳本,採用 IP 庫,緩慢平滑的增長票數。

十、扣量邏輯:常見於一些軟件評選之類的投票。

a:這是個殺手鐗,後臺跑腳本實時監控異常增加(刷票)的項,而後實施扣量邏輯。

b:即對於這個項,投 10 票纔算一票。

十一、Cookie:經常使用的手段。比較低級。

a:投票後,在客戶端寫入 Cookie,下次投票時判斷 Cookie 是否存在。

b:可是,這種方式很是容易攻破,由於 Cookie 可刪除。

十二、加密選項 ID:對一些投票選項的ID,進行隨機加密。

a:加密算法,加Salt,而且設置有效時間,好比5分鐘內。

b:服務器端進行解密而且驗證。

1三、人工刷票:沒辦法防。。

a:僱傭了一批水軍,進行刷票,這個真沒轍,人家確實是花了血本的。
相關文章
相關標籤/搜索