防刷票
2015-07-02 14:03
267 查看
基于 PHP,下面介绍防刷票的一些技巧:
1、HTTP_REFERER : 校验 $_SERVER['HTTP_REFERER']。可伪造,使用 CURL。
curl_setopt($ch, CURLOPT_REFERER, 'HTTP://www.baidu.com');(攻击手段)
2、IP限制:加上 IP 投票限制。可伪造,使用 CURL。
$ip = ***.***.***.***;
$header = array(
"CLIENT-IP:{$ip}",
"X-FORWARDED-FOR:{$ip}",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);(攻击手段)
3、User-Agent:校验 $_SERVER['HTTP_USER_AGENT']。可伪造,使用 CURL。
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");(攻击手段)
4、验证码:采用非常复杂的验证码,可以防止一些菜鸟攻击者。
a:但是专业刷票机可以攻破。如果不用验证码,投票基本就歇菜了。
b:验证码获取方式,采用异步加载,即点击输入框时,才去请求。
c:投票成功后,删除验证码的 Session。
5、登录:用户必须登录才能投票。
a:可以攻破,写程序不断注册新用户,然后用来投票。(攻击手段)
b:指定大于某个 UID 的用户,或者某段时间内活跃的用户,才能进行投票。(预防对策)
6、限时投票:投票程序,只在某个时间段内开放。否则,对方半夜刷票,你咋办?
a:从 早 8 点 至 晚 23 点。(预防对策)
7、投票间隔:用户投票后,需要隔多长时间才能继续投。
a:很多投票站点基本上都有这个限制,但是对于更改 IP的攻击,就没办法了。
b:针对 UID 限制,可以有效防止攻击,但是可以使用批量注册马甲用户。
8、投票结果展示:延迟展示,友好展示。
a:页面上投票,JS 立马加1,但是刷新页面,不一定立马展示最新投票结果。
b:返回状态给页面(感谢您的投票!或者 投票成功!至于有没有成功,另说了!)
9、补票逻辑:常见于一些软件评选之类的投票。
a:有时候软件厂商会为了让自己的票数高一点,会私下给活动举办商 $,后台进行补票。
b:后台跑脚本,采用 IP 库,缓慢平滑的增加票数。
10、扣量逻辑:常见于一些软件评选之类的投票。
a:这是个杀手锏,后台跑脚本实时监控异常增长(刷票)的项,然后实施扣量逻辑。
b:即对于这个项,投 10 票才算一票。
11、Cookie:常用的手段。比较低级。
a:投票后,在客户端写入 Cookie,下次投票时判断 Cookie 是否存在。
b:但是,这种方式非常容易攻破,因为 Cookie 可删除。
12、加密选项 ID:对一些投票选项的ID,进行随机加密。
a:加密算法,加Salt,并且设置有效时间,比如5分钟内。
b:服务器端进行解密并且验证。
13、人工刷票:没办法防。。
a:雇佣了一批水军,进行刷票,这个真没辙,人家确实是花了血本的。
常规手段
IP限制
这是网上投票最常见的防刷票手段,可限制每个IP在一定时间内只能投票一次,因IP很难伪造,可靠性较高。需要注意是如果在同一个局域网下(例如用同一个路由器的wifi),则可能存在不同终端IP相同的情况。如果是使用的是手机运营商网络,则不会有此情况。
设备限制
可使用Cookie等技术标记已投票过的设备(电脑、手机等),但技术上这些“投票标记”仍存在被篡改的可能。
图形验证码
验证码要求投票者输入或回答一些机器较难识别的图形或问题,可有效防止作弊者利用电脑程序进行模拟自动投票。
投票吧防作弊刷票特色功能
邀请码
1、什么是邀请码: 投票者必须凭邀请码才能投票,且只能使用一次。
2、适用场景: 适合投票人群固定的小范围投票活动使用,由投票组织人向每人发放一个邀请码,可有效杜绝作弊刷票。
3、如何生成邀请码: 点击下方的“生成邀请码”按钮即可进入生成向导。可以自动生成指定数量的邀请码,还可以为每个邀请设置对应的用户名称标识(如姓名、QQ、工号等),便于识别哪些用户还没投票。
使用邀请码能精确监控投票进行情况
使用邀请码能精确监控投票进行情况
地理位置限制
可限定指定省份或城市的用户才允许投票,对于区域性投票活动的防刷票特别有效。技术上,除了通过IP地址,投票吧还使用了最新的html5技术用于地理位置识别,可更精确的实现用户地理位置定位。
可限制特定省份、城市的用户才能投票
可限制特定省份、城市的用户才能投票
微信号验证
如启用微信号验证,可限制每个微信号只能投一次票,并可在投票日志记录用户的微信号公开信息(昵称、头像等)。微信验证同时支持电脑和手机投票:使用电脑投票会提示用微信客户端扫描电脑屏幕的二维码;使用手机等移动设备投票,则必须通过微信客户端进入投票,投票前会提示授权验证微信账号(一键授权验证,无需密码),按此了解《如何创建发起微信投票》。
QQ号验证
投票前要求在网页进行QQ登录验证(通过QQ官方接口验证),以限制每个QQ号只能投票一次,可在一定程度上增加刷票难度。
邮箱验证码
系统会将验证码发送到投票者指定的邮箱,相同的邮箱,不能重复参与投票。当然,作弊者可以通过注册大量真实邮箱来绕过这个限制,所以邮箱验证码只能说是增加了作弊成本。
限定指定邮箱
这是对邮箱验证码功能的补充,除实现相同邮箱不能重复投票功能外,管理员还需要明确指定允许哪些邮箱参与投票,对于可确定投票者邮箱的小范围投票活动,可非常有效的防范刷票作弊。
手机验证码
与邮箱验证码类似,系统会将验证码用短信发送到投票者指定的手机,相同的手机号,不能重复参与投票。相比邮箱验证码,如果作弊者要刷票,必须掌握大量手机号才可以,将大大增加作弊成本。
自定义输入栏
自定义输入栏用于让投票者提交更多信息,常用于信息收集,例如要求录入“联系方式、居住地”;还可用于实名投票,例如要求录入“姓名、工号”等个人资料,并勾选“禁止重复”,可在一定程度上防范作弊刷票。
日志分析
所有投票人次的时间、IP、所选选项、邮箱、手机都会一一记录,管理员可通过对日志的人工分析,发现可疑的投票行为。
投票结果显示
可以自有设置在投票前或投票后是否显示投票结果,为防范刷票,建议设置为投票结束后才显示票数。
强制停留时间
可要求用户在投票网页停留一定时间才能投票,可一定程度增加刷票成本。
总结
以上各种功能和技术手段,均能在一定程度上防范作弊刷票,或增加作弊刷票的成本,部分技术更是投票吧的特有专业功能。作为专业的投票平台服务商,我们很清楚基于网络投票的特点,要完全杜绝作弊刷票,几乎不可能,正因如此,投票吧仍会不断对防作弊技术进行改进和创新。
1、HTTP_REFERER : 校验 $_SERVER['HTTP_REFERER']。可伪造,使用 CURL。
curl_setopt($ch, CURLOPT_REFERER, 'HTTP://www.baidu.com');(攻击手段)
2、IP限制:加上 IP 投票限制。可伪造,使用 CURL。
$ip = ***.***.***.***;
$header = array(
"CLIENT-IP:{$ip}",
"X-FORWARDED-FOR:{$ip}",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);(攻击手段)
3、User-Agent:校验 $_SERVER['HTTP_USER_AGENT']。可伪造,使用 CURL。
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");(攻击手段)
4、验证码:采用非常复杂的验证码,可以防止一些菜鸟攻击者。
a:但是专业刷票机可以攻破。如果不用验证码,投票基本就歇菜了。
b:验证码获取方式,采用异步加载,即点击输入框时,才去请求。
c:投票成功后,删除验证码的 Session。
5、登录:用户必须登录才能投票。
a:可以攻破,写程序不断注册新用户,然后用来投票。(攻击手段)
b:指定大于某个 UID 的用户,或者某段时间内活跃的用户,才能进行投票。(预防对策)
6、限时投票:投票程序,只在某个时间段内开放。否则,对方半夜刷票,你咋办?
a:从 早 8 点 至 晚 23 点。(预防对策)
7、投票间隔:用户投票后,需要隔多长时间才能继续投。
a:很多投票站点基本上都有这个限制,但是对于更改 IP的攻击,就没办法了。
b:针对 UID 限制,可以有效防止攻击,但是可以使用批量注册马甲用户。
8、投票结果展示:延迟展示,友好展示。
a:页面上投票,JS 立马加1,但是刷新页面,不一定立马展示最新投票结果。
b:返回状态给页面(感谢您的投票!或者 投票成功!至于有没有成功,另说了!)
9、补票逻辑:常见于一些软件评选之类的投票。
a:有时候软件厂商会为了让自己的票数高一点,会私下给活动举办商 $,后台进行补票。
b:后台跑脚本,采用 IP 库,缓慢平滑的增加票数。
10、扣量逻辑:常见于一些软件评选之类的投票。
a:这是个杀手锏,后台跑脚本实时监控异常增长(刷票)的项,然后实施扣量逻辑。
b:即对于这个项,投 10 票才算一票。
11、Cookie:常用的手段。比较低级。
a:投票后,在客户端写入 Cookie,下次投票时判断 Cookie 是否存在。
b:但是,这种方式非常容易攻破,因为 Cookie 可删除。
12、加密选项 ID:对一些投票选项的ID,进行随机加密。
a:加密算法,加Salt,并且设置有效时间,比如5分钟内。
b:服务器端进行解密并且验证。
13、人工刷票:没办法防。。
a:雇佣了一批水军,进行刷票,这个真没辙,人家确实是花了血本的。
常规手段
IP限制
这是网上投票最常见的防刷票手段,可限制每个IP在一定时间内只能投票一次,因IP很难伪造,可靠性较高。需要注意是如果在同一个局域网下(例如用同一个路由器的wifi),则可能存在不同终端IP相同的情况。如果是使用的是手机运营商网络,则不会有此情况。
设备限制
可使用Cookie等技术标记已投票过的设备(电脑、手机等),但技术上这些“投票标记”仍存在被篡改的可能。
图形验证码
验证码要求投票者输入或回答一些机器较难识别的图形或问题,可有效防止作弊者利用电脑程序进行模拟自动投票。
投票吧防作弊刷票特色功能
邀请码
1、什么是邀请码: 投票者必须凭邀请码才能投票,且只能使用一次。
2、适用场景: 适合投票人群固定的小范围投票活动使用,由投票组织人向每人发放一个邀请码,可有效杜绝作弊刷票。
3、如何生成邀请码: 点击下方的“生成邀请码”按钮即可进入生成向导。可以自动生成指定数量的邀请码,还可以为每个邀请设置对应的用户名称标识(如姓名、QQ、工号等),便于识别哪些用户还没投票。
使用邀请码能精确监控投票进行情况
使用邀请码能精确监控投票进行情况
地理位置限制
可限定指定省份或城市的用户才允许投票,对于区域性投票活动的防刷票特别有效。技术上,除了通过IP地址,投票吧还使用了最新的html5技术用于地理位置识别,可更精确的实现用户地理位置定位。
可限制特定省份、城市的用户才能投票
可限制特定省份、城市的用户才能投票
微信号验证
如启用微信号验证,可限制每个微信号只能投一次票,并可在投票日志记录用户的微信号公开信息(昵称、头像等)。微信验证同时支持电脑和手机投票:使用电脑投票会提示用微信客户端扫描电脑屏幕的二维码;使用手机等移动设备投票,则必须通过微信客户端进入投票,投票前会提示授权验证微信账号(一键授权验证,无需密码),按此了解《如何创建发起微信投票》。
QQ号验证
投票前要求在网页进行QQ登录验证(通过QQ官方接口验证),以限制每个QQ号只能投票一次,可在一定程度上增加刷票难度。
邮箱验证码
系统会将验证码发送到投票者指定的邮箱,相同的邮箱,不能重复参与投票。当然,作弊者可以通过注册大量真实邮箱来绕过这个限制,所以邮箱验证码只能说是增加了作弊成本。
限定指定邮箱
这是对邮箱验证码功能的补充,除实现相同邮箱不能重复投票功能外,管理员还需要明确指定允许哪些邮箱参与投票,对于可确定投票者邮箱的小范围投票活动,可非常有效的防范刷票作弊。
手机验证码
与邮箱验证码类似,系统会将验证码用短信发送到投票者指定的手机,相同的手机号,不能重复参与投票。相比邮箱验证码,如果作弊者要刷票,必须掌握大量手机号才可以,将大大增加作弊成本。
自定义输入栏
自定义输入栏用于让投票者提交更多信息,常用于信息收集,例如要求录入“联系方式、居住地”;还可用于实名投票,例如要求录入“姓名、工号”等个人资料,并勾选“禁止重复”,可在一定程度上防范作弊刷票。
日志分析
所有投票人次的时间、IP、所选选项、邮箱、手机都会一一记录,管理员可通过对日志的人工分析,发现可疑的投票行为。
投票结果显示
可以自有设置在投票前或投票后是否显示投票结果,为防范刷票,建议设置为投票结束后才显示票数。
强制停留时间
可要求用户在投票网页停留一定时间才能投票,可一定程度增加刷票成本。
总结
以上各种功能和技术手段,均能在一定程度上防范作弊刷票,或增加作弊刷票的成本,部分技术更是投票吧的特有专业功能。作为专业的投票平台服务商,我们很清楚基于网络投票的特点,要完全杜绝作弊刷票,几乎不可能,正因如此,投票吧仍会不断对防作弊技术进行改进和创新。
相关文章推荐
- ORACLE查看表空间对象
- Android编译过程详解(二)
- Lr_debug_message,Lr_output_message,Lr_error_message,Lrd_stmt,Lrd_fetch
- JAVA学习:文本框的设计与实现
- HTML5学习之FileReader接口
- windows下使用meld作为git mergetool
- LeetCode-Shortest Palindrome-解题报告
- C#获取视频文件的播放时间
- ubuntu下android连接真机开发找不到手机问题解决
- Spring MVC - 两种文件下载方式
- 嵌入式linux系统ubuntu配置TFTP服务器
- DBArtisan 连接oracle数据库 和sybase 数据库
- ajax过程
- windows下删除文件时提示“操作无法完成 因为文件已在。。。”解决方案
- Building an MFC project for a non-Unicode character set is deprecated
- [技巧篇]07.JSON.parse() 和 JSON.stringify()
- Android编译过程详解(一)
- iOS--cell的重用机制
- DBArtisan 连接oracle数据库 和sybase 数据库
- HDU 1892 See you~ 【 二维树状数组 】