简单的PHP实现网络刷投票程序

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、手机
    投票时输入手机号和短信验证码,成本高,单位不愿意。用户发送某某指令到某某,用户自掏腰包,用户不愿意。

目前来说,只有验证码,手机并且验证手机的有效性是最好的防治措施。

时间: 2024-09-08 23:31:59

简单的PHP实现网络刷投票程序的相关文章

JSP实现的简单Web投票程序代码_JSP编程

本文实例讲述了JSP实现的简单Web投票程序.分享给大家供大家参考.具体如下: 这里使用文本文件作为数据存储的投票系统. 1. vote.java: package vote; import java.io.*; import java.util.*; public class vote { public String filePath = ""; public int n; private File voteFile; private BufferedReader fileRead;

实例学习PHP之投票程序篇

程序|投票 要想学习PHP,当然少不了要安装PHP啦,所以如果你是初次学习,请先阅读网络学院的文章: PHP4.03在linux下的安装 PHP4.04在win98下的安装 PHP4.04在英文win2000下的安装 如果你找不到安装程序请到下面下载: PHP4.04Beta WIN32 安装程序 PHP4.03源程序 PHP3.0.16 WIN32 安装程序 PHP3.0.16源程序 本篇是"实例学习 PHP 之表单处理"的后继篇,请对php处理表单不清楚的朋友先看前篇----实例学

用ASP.NET 2.0设计网络在线投票系统

asp.net|设计|投票|网络|在线 一.系统功能设计和数据库设计 1.系统功能设计和数据库设计 1.1 系统功能设计 网络在线投票系统实现的功能比较简单,具体如下: ◎投票项目的管理: ◎添加投票的项目: ◎删除投票的项目: ◎对项目进行投票: ◎查看项目的投票情况. 1.2 数据库设计 本系统的数据库设计比较简单,只需要存储投票的信息即可.在SQL Server 2000中创建一个数据库,名称为"WebVoteDB",并在该数据库中创建投票项目表Votes.其中"Vot

实例学习PHP之投票程序篇(一)

  学习前的准备:       要想学习PHP,当然少不了要安装PHP啦,所以如果你是初次学习,请先阅读网络学院的文章:         PHP4.03在linux下的安装       PHP4.04在win98下的安装       PHP4.04在英文win2000下的安装       如果你找不到安装程序请到下面下载:       PHP4.04Beta WIN32 安装程序          PHP4.03源程序          PHP3.0.16 WIN32 安装程序         

Flash+ASP联合打造投票程序(图)

程序|投票|投票 为了调查了解站点访问者对特定问题的立场,我们可以在站点中设置投票程序,站点访问者直接选择答案,程序自动对所有答案进行统计和显示. 下面是一个简单的flash版的投票程序,后台使用xml+ asp+ mysql:因为大多web工作 者对asp比较熟悉,xml可以将复杂的问题简化,采用mysql的原因是access我没有安装,程序不需要任何存储过程,所以无需动SQL Server ,Oracle等重兵器. 问题分析:本投票程序是选择题,故我们用一个字段存储用户的答案即可. 建立数据

实例学习PHP之投票程序篇(二)

  好了,基础的东西已经学完,让我们来进行实战吧!大家先下这个范例程序.然后可以在自己的平台上先试试看.相信这样会得到一点感性认识.       在这个应用中一共使用了三个文件vote.php,config.php,1.gif以及一个保存数据的文件(该文件的名字可以自由设定,在这里我们设为sum.txt),其中vote.php是主程序文件,config.php则用于设置一些经常需要修改的信息.       //config.php文件       < ?       //title变量设定本ht

PHP实例剖析:投票程序

这是一个简单的投票程序,不需要数据库的支持.本程序容易理解,容易上手,是个不错的入门程序.缺点:占用服务器太多时间,有待改进.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 可随意使用 分析:我们利用一个文件(data.dat)来存储投票栏目.每个栏目占据一行.这样一来,便可随意加入和减去想要投票的栏目. 我们再利用一个文件(votes.dat)来存储我们的投票结果.并

Flash+ASP联合打造投票程序

程序|投票 为了调查了解站点访问者对特定问题的立场,我们可以在站点中设置投票程序,站点访问者直接选择答案,程序自动对所有答案进行统计和显示. 下面是一个简单的flash版的投票程序,后台使用 xml+ asp+ mysql: 因为大多web工作者对asp比较熟悉,xml可以将复杂的问题简化,采用mysql的原因是access 我没有安装,程序不需要任何存储过程,所以无需动SQL Server ,Oracle 等重兵器. 点击这里附件下载源文件 (53k) 问题分析:本投票程序是选择题, 故我们用

PHP实现的限制IP投票程序IP来源分析_php技巧

本文实例分析了PHP实现的限制IP投票程序.分享给大家供大家参考,具体如下: 接到一个投票活动的需求,需要做IP限制,每个IP限制一定的投票机会.我在搜索引擎上搜索了关键词:PHP客户端IP ,结果基本上都是以下内容: if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('