网站防止被刷票的一些思路与方法


Posted in PHP onJanuary 08, 2015

1. IP限制
这是使用的最多,也是最广泛,不可少的刷票限制。而且由于专题都没有用户模块,使得这个方法,几乎成了唯一可行的手段。该方式,通过获取访问游客的IP地址,来限制其在一段时间内所能使用的票数。当然,正常访问页面投票的游客,肯定都能很好的被这个手段所限制,但是,各种投票的活动和专题,以及丰厚的奖品,使得一些人想方设法的想要进行刷票。

ADSL用户,可以通过断线重拨来更换IP地址。
使用代理访问的用户,我们也无法获得其真实的IP地址。
还有我们未知的刷票工具。
以上都是我们没有办法克服的难题,而且对于网吧/内网用户来说,这样的设置也会显得不够公平。

2. Cookies 验证
这也是网上所用到较多的手段,不过,所有来自于客户端的信息和内容都是不可靠的。熟知cookies原理的人,就可以很容易的绕过限制。

cookies 可以禁用。
使用代理访问的用户,我们也无法获得其真实的IP地址。
Cookies可以随意清除、修改。
3. Session 验证
session会给所有访问的游客,指定一个唯一的sessionID。这样,似乎对于防止刷票有一些作用。可惜session有致命的缺点。

关闭浏览器,session就会被销毁。
客户端禁用cookies,session也会失效。
4. 验证码
注册,登陆,回复,发帖……验证码使用的范围很广,很多。可惜,至于具体效果呢,长久下来,只发现这样的方式,其实只是加大了普通游客的投票难度,而且刷票频繁的访问验证码,也大大加大了服务器负担。

有一种验证码是可行的,google推出的图形验证码,旨在让用户将图片翻转至正确的方向,方可完成验证。想必很少有软件或者电脑操作可以很好的绕过这样的验证码。不过,缺点呢,实现难度很高。

5. MAC地址限制
作为web程序,很难获取真实的Mac地址(我用php/js实验过,并没有成功的获取到Mac地址)。当我们读取客户端Mac地址时,读取的也是存储于注册表的一个信息,它也是可以进行修改的。

6. 用户模块
这应该算很有用的方式。每个游客,必须注册了账户才能进行投票,通过限制账户ID来限制投票,并且可以限制初始注册用户,一段时间内不能参与投票。而且,真有大量的注册用户涌入,也可以增加网站的流量。可是,对于小地区网站来说,这样会让网友觉得很麻烦,可能放弃投票,从而可能流失网站的用户。

7. 行为记录
其实,很多刷票行为我们是没办法进行限制的。可是有时候,我们却可以很好的记录下来。而且当检测到非正常投票的时候,自动提出票数,要么返回投票成功的假象,也可以很好的限制刷票。

缺点就是,记录过多的数据,会让服务器压力很大。而且,如果记录行为的记录点不够多,不够复杂,也可能被刷票的专业户所参透。

8. 回答问题
第一次使用这个方式限制刷票的时候,我们很欣慰的看到了不错的效果。可惜,如果没有足够海量的题库,很快问题的内容和答案就会被收集。反而让正常投票的用户,觉得投票很恶心、麻烦,产生厌恶心理。渐渐的也被我们抛弃了。

9. 随机投票地址
该方法, 让每一个访问页面的用户得到一个随机唯一的KEY,通过这个KEY,生成一个投票地址,该地址只能访问一次,使用过后便作废。

可惜,指定的KEY的内容,我目前是采用的sessionid+ip+随机数 生成的MD5码,而sessionid和ip在上面的内容都提到,是可以销毁和篡改的。这样的方式,也不过是在ip限制和session限制无效时候的垂死挣扎。

10. 填写信息
投票时,让游客填写身份证,姓名,手机号码等可以表示一个人身份的信息,来进行唯一性验证。不过,身份证你知道格式,姓名随便填,手机号码随便填写,也是没办法限制的。反而让正常投票的人觉得麻烦。

11. 投票码/排号系统
投票前,用户都需要在其他页面/邮箱先获取到一个唯一投票的编码/卷,使用一次作废。不过,如何验证‘人'的唯一呢,如果有用户,他的邮箱足够多,是不是就可以无限获取投票码呢。

对!所以,这也只是治标不治本的方法了。不过,至少,这个方式也会让刷票的人觉得很麻烦。但是同时,也会让正常投票的人觉得不方便。不过,能够让刷票党,刷得不是那么痛快,也算是有用了。

12. 人民币投票
虎,这样最好,不管是发短信,打电话,还是支付宝,一票一元人民币,你如果是足够舍得,当然,随便你投,随便你刷,咱也乐意不是。通过支付接口的结合,作弊是相当难的了。

不过,公平性有待考究,毕竟不是所有人的支持者都有钱,都舍得花钱,可能让好的作品因为‘穷'而得不到票数,这是在咱公平、民主的社会中,是不提倡的!

好了,差不多就以上这些方式。引用一个网友的原文:“要想完全杜绝刷票,基本只能靠人”。

抛砖引玉:

flash投票,不过不是很清楚原理,有空的时候会投入测试。
插件。 web插件,可能需要用户下载安装,普通用户会觉得很麻烦,可行性有待考究。
一些有趣的设置 例如,短时间内的多次投票,可能导致投票数下降;可以给作品投负票数,不过有一定几率无效或者反射到其他作品;类似农场的‘偷菜',我们可以投票等。也许可以增加一点可玩性,可是公平性就无法保证了。
总结:个人觉得目前最有效的只能是人民币投票了,可以很好的限制刷票行为。

PHP 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
配置php网页显示各种语法错误
Sep 23 PHP
php 过滤英文标点符号及过滤中文标点符号代码
Jun 12 PHP
PHP中的替代语法简介
Aug 22 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
php实现小程序支付完整版
Oct 09 PHP
thinkphp5实现无限级分类
Feb 18 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
分享常见的几种页面静态化的方法
Jan 08 #PHP
php的ddos攻击解决方法
Jan 08 #PHP
php的sso单点登录实现方法
Jan 08 #PHP
PHP制作万年历
Jan 07 #PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 #PHP
CI框架中site_url()和base_url()的区别
Jan 07 #PHP
给ECShop添加最新评论
Jan 07 #PHP
You might like
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
php获取参数的几种方法总结
2014/02/18 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
临床医学专业毕业生的自我评价
2013/10/17 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
学生会部长竞聘书
2014/03/31 职场文书
房屋出租协议书
2014/04/10 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
单位租房协议范本
2014/12/03 职场文书
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android