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


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 相关文章推荐
我的论坛源代码(三)
Oct 09 PHP
数字转英文
Dec 06 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php安装swoole扩展的方法
Mar 19 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
Laravel学习教程之View模块详解
Sep 18 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
Php+SqlServer实现分页显示
2006/10/09 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
pandas对指定列进行填充的方法
2018/04/11 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
Python global全局变量函数详解
2018/09/18 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
如何对python的字典进行排序
2020/06/19 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
自我鉴定三原则
2014/01/13 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
2015年女工委工作总结
2015/07/27 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
openstack云计算keystone组件工作介绍
2022/04/20 Servers
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers