找回密码
 注册加入

扫一扫,极速登录

QQ登录

只需一步,快速开始

搜索
查看: 6663|回复: 0

浅谈PHP投票系统如何防刷票

[复制链接]
TA的专栏
发表于 2012-12-16 17:38:23 | 显示全部楼层 |阅读模式

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


  • 首先一个复杂的验证码是非常非常重要的,刚开始用了一个很简单的小验证码,根本躲不过刷票程序的破解。所以在网上找了一个很复杂的验证码,连人工投票都得刷新两下。有需要的可以留下邮箱,我会在第一时间发过去。
  • 因为投票都是实名制的,填写身份证号码的,所以身份证号码的验证也是必要的。首先身份证号码必须为18位(一代身份证现在基本上见不到了),前17位必须为数字。代码现在写出来一个参考的 if(((strlen($sfz))!=18 and (strlen($sfz))!=15) or (!is_numeric(substr($sfz,0,strlen($sfz)-1)))) “$sfz”是接收到的身份证号码,这条语句后面可以添加一个提示方式。另外在投票之前验证当前身份证是否已经投过票,否则不予计票。
  • 如果特别正式的可以使用注册后再进行投票的机制,注册的时候也应该对注册信息进行判断,注册的时候必须添加验证码进行限制。
  • 程序的的安全机制也很重要的,如果使用面向对象的程序,必须把计票的函数设为private,防止SQL注入!
  • 另外就是使用cookie方式在客户端进行时间限制,这种方式是防君子不防小人,专业刷票团队肯定首先会想到这一点。但还是建议加上。
  • 还有一个就是IP限制,比如每个IP只允许投100票(考虑到一些公司使用一个大局域网,公网IP都是用的一个,否则可能会出现不公平的现象)。
  • 最后一个也是最重要的,验证码输入框那里用异步通信进行实现。网页初始验证码是不显示的,点击验证码输入框再显示出来验证码,而投票成功之后马上unset验证码的SESSION。这样就可以避过绝大多数刷票机。

基本上做了这些 限制就可以杜绝一些刷票程序进行刷票,但还是防不了人工刷票,这个也是没有办法防的。我们程序员只能做到最大限度对软件进行限制。如果网友们有比较好的建议可以在此提出来,共同探讨。

您需要登录后才可以回帖 登录 | 注册加入  

本版积分规则

Archiver|手机版|小黑屋|Discuz!扩展中心 ( 浙ICP备14042422号-1 )|网站地图QQ机器人

GMT+8, 2024-3-29 22:51 , Processed in 0.415817 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表