文档章节

PHP教程-防止网站被刷票的小技巧

lampbrotherIT
 lampbrotherIT
发布于 2016/07/27 11:22
字数 1708
阅读 18
收藏 1

在Web开发中,投票模块会经常出现。这样就使得防止刷票,成了至关重要的技术。以下是兄弟连教育www.lampbrother.net总结的一些防止刷票方法:

  1. IP限制

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

ADSL用户,可以通过断线重拨来更换IP地址。

使用代理访问的用户,我们也无法获得其真实的IP地址。

还有我们未知的刷票工具。

以上都是我们没有办法克服的难题,而且对于网吧/内网用户来说,这样的设置也会显得不够公平。

  1. Cookies 验证

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

cookies 可以禁用。

使用代理访问的用户,我们也无法获得其真实的IP地址。

Cookies可以随意清除、修改。

  1. Session 验证

session会给所有访问的游客,指定一个唯一的sessionID。这样,似乎对于防止刷票有一些作用。可惜session有致命的缺点。

关闭浏览器,session就会被销毁。

客户端禁用cookies,session也会失效。

  1. 验证码

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

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

  1. MAC地址限制

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

  1. 用户模块

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

  1. 行为记录

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

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

  1. 回答问题

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

  1. 随机投票地址

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

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

  1. 填写信息

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

  1. 投票码/排号系统

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

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

  1. 人民币投票

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

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

总结:小编觉得目前最有效的只能是人民币投票了,可以很好的限制刷票行为。

© 著作权归作者所有

lampbrotherIT
粉丝 2
博文 37
码字总数 50418
作品 0
昌平
私信 提问
PHP+MySQL,关于防刷票的问题,太敬业了服务器都刷死了

我这里有时会办一些评选活动,牵扯到网络投票,不可避免的就会遇到被刷票的问题,本身我做了一些防刷票处理,但效果不理想,而且面对刷票机大量的提交,服务器也会扛不住,所以想咨询一下,到...

LUIJI
2013/06/17
6K
35
JSP防止刷票(防止不正当投票)

前几天一个活动限制了IP,是还是出现了刷票的现象,现在把解决办法说说一下 第一: 限制页面来源,只允许网站内指定页面跳转到业务处理页面 String reURL = request.getHeader("Referer"); 如...

枫爱若雪
2012/10/15
874
12
《PHP安全编程系列》系列分享专栏

PHP安全编程系列收藏夹收藏了有关PHP安全编程方面的知识,对PHP安全编程提供学习参考 《PHP安全编程系列》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201738...

kaixin_code
2018/11/06
24
0
2014年抢票总结

2014年的抢票捡漏工作已经结束,现对这段时间以来的付出和收获进行总结。过程记录:http://www.cnblogs.com/liweis/p/4150354.html 黄牛与普通人对比 黄牛的工作流程:在极好的网络环境和硬件...

gisweis
2015/02/14
0
0
怎么防止刷票呢?现在的刷票公司太狠了。

做了一个投票的小程序,因为涉及到个人利益,许多人都刷票,我已经做了IP地址24小时之内只能投票一次。从投票记录来看,一个投票候选人可以在1秒内分别用不同的IP投票10次,这情况可以持续一...

木川瓦兹
2014/08/12
5K
17

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(四)——复合Lambda

在一起来学Java8(二)——Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda。 Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用Lambda表达式实现函...

猿敲月下码
19分钟前
6
0
debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
51分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
52分钟前
8
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
56分钟前
8
0
深入了解Redis底层数据结构

说明 说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他们的特点和运用场景。不过它们是...

TurboSanil
57分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部