PHP投票系统如何防刷票

生活中,不少人都会遇到需要投票。但往往投票的地方也是薄弱的,可能对投票来源没有验证的话,将会导致刷票,严重的话还会导致网站沦陷。

 

下面这篇文章就是讲如何防刷票,虽然不是100%能防止,但是也能从根源上杜绝了一大批菜鸟对系统的破坏。我就直接转过来了:)

 

刚刚做了一个刷票系统,感触不少,刚开始也是遇到好多好多刷票的。经过了一次又一次的改正,基本上杜绝了刷票程序进行的刷票。下面把具体刷票方面列举出来
 

1.首先一个复杂的验证码是非常非常重要的,刚开始用了一个很简单的小验证码,根本躲不过刷票程序的破解。所以在网上找了一个很复杂的验证码,连人工投票都得刷新两下。有需要的可以留下邮箱,我会在第一时间发过去。

 

2.因为投票都是实名制的,填写身份证号码的,所以身份证号码的验证也是必要的。首先身份证号码必须为18位(一代身份证现在基本上见不到了),前17位必须为数字。代码现在写出来一个参考的 if(((strlen($sfz))!=18 and (strlen($sfz))!=15) or (!is_numeric(substr($sfz,0,strlen($sfz)-1)))) “$sfz”是接收到的身份证号码,这条语句后面可以添加一个提示方式。另外在投票之前验证当前身份证是否已经投过票,否则不予计票。

 

3.如果特别正式的可以使用注册后再进行投票的机制,注册的时候也应该对注册信息进行判断,注册的时候必须添加验证码进行限制。

 

4.程序的的安全机制也很重要的,如果使用面向对象的程序,必须把计票的函数设为private,防止SQL注入!

 

5.另外就是使用cookie方式在客户端进行时间限制,这种方式是防君子不防小人,专业刷票团队肯定首先会想到这一点。但还是建议加上。

 

6.还有一个就是IP限制,比如每个IP只允许投100票(考虑到一些公司使用一个大局域网,公网IP都是用的一个,否则可能会出现不公平的现象)。

 

7.最后一个也是最重要的,验证码输入框那里用异步通信进行实现。网页初始验证码是不显示的,点击验证码输入框再显示出来验证码,而投票成功之后马上unset验证码的SESSION。这样就可以避过绝大多数刷票机。

 

本文大概提供了一些常规的思路,所谓防人之心不可无,你不能确保每个用户输入的都是安全的。最后说一句:检查的时候记得白名单,这是必要的。

时间: 2024-11-03 02:28:48

PHP投票系统如何防刷票的相关文章

asp.net c投票系统(防刷功能)

asp教程.net c投票系统(防刷功能) 本文章是利用了asp.net教程 mssql做的一款防刷投票系统,他是利用了cookie来实现的. */ using system; using system.configuration; using system.data; using system.linq; using system.web; using system.web.security; using system.web.ui; using system.web.ui.htmlcontr

简易的投票系统以及js刷票思路和方法_javascript技巧

早就听说有什么刷票脚本,微博投票等等相关的投票都有某些人去刷票. 试一下吧,兴许自己也会刷票呢?捣鼓了几个小时,终于有所眉目. (1)投票系统 要刷票,就得先有个投票界面. 当然,可以直接去各个投票网站就行,不过这里还是自己弄个投票页面,方便自己. 页面大致如下 或者 查看演示 照理,界面很简洁,但也基本有了投票的基本功能. 原始规则是:只能投一次票,然后提示成功,然后按钮不可用. 都是原生JS,DOM操作不灵活的可以借此练练手.当然,用jq将会很便捷. html/css部分 <!DOCTYPE

投票系统防刷代码

投票系统防刷代码 $value =$this->host;         if(empty($_COOKIE["cook"])){      setcookie("cook", $value, time()+1800, "/");       $v_host = $this->host;         $v_ip = $this->get_real_ip();           $v_date =date("Y-

简单投票系统[防刷程序刷新]

简单投票系统[防刷程序刷新] <?php include_once("../inc/connect.php");  $value =$_SERVER['HTTP_HOST'];   if(empty($_COOKIE["cook"])){     if(sizeof($_POST)<9){ exit("<script>alert('对不起,你还有选项未选!');history.back();</script>"

防作弊很强的投票系统机制源代码

源代码|作弊|投票系统 这个是投票前一页代码.在此页点击投票.<%Response.Cookies("cook")="yes"%>以下是投票页代码<%if Request.Cookies("cook")<>"yes" thenresponse.write "<script language='javascript'>alert('cookies没开启无法进行投票');loca

防刷票机制研究和.NET HttpRequest Proxy

最近应朋友之约 测试他做的投票网站 防刷票机制能力如何,下面有一些心得和体会. 朋友网站用PHP写的,走的是HttpRequest,他一开始认为IP认证应该就差不多了.但说实话这种很low,手动更换代理服务器手动刷都可以.但程序员的手就是程序,于是, 首先,百度到 一些 免费代理服务器,非常多网站分享这些.按一定格式来储存到TXT文件. 第二步使用Fiddler来进行截取消息,拿到其http request header和body: 本栏目更多精彩内容:http://www.bianceng.c

基于PHP给大家讲解防刷票的一些技巧_php实例

刷票行为,一直以来都是个难题,无法从根本上防止. 但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制. 基于 PHP,下面介绍防刷票的一些技巧: 1.使用CURL进行信息伪造 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://localhost/2.php"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIEN

Django快速开发之投票系统

参考官网文档,创建投票系统. ================ Windows  7/10 Python 2.7.10 Django 1.8.2 ================     1.创建项目(mysite)与应用(polls)            D:\pydj>django-admin.py startproject mysite D:\pydj>cd mysite D:\pydj\mysite>python manage.py startapp polls 添加到sett

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

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