基于PHP给大家讲解防刷票的一些技巧


Posted in PHP onNovember 18, 2015

刷票行为,一直以来都是个难题,无法从根本上防止。

但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。

基于 PHP,下面介绍防刷票的一些技巧:

1、使用CURL进行信息伪造

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/2.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8'));
curl_setopt($ch, CURLOPT_REFERER, "http://localhost/ ");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");
$out = curl_exec($ch);
curl_close($ch);

2、验证码:采用非常复杂的验证码

确切的说验证码的出现不是针对于人,而是针对于机器。通过复杂度和识别难易度的控制来阻拦掉一部分刷票机,从而减少刷票的发生。但随着软件技术、识别技术的发展越来越多的验证码面对着先进的刷票软件也失去了其防范的作用、但是专业刷票机可以攻破。如果不用验证码,投票基本就歇菜了,验证码获取方式,采用异步加载,即点击输入框时,才去请求,投票成功后,删除验证码的 Session

3、限时投票

比如:从早8点至晚23 点

4、设置投票间隔

用户投票后,需要隔多长时间才能继续投。

很多投票站点基本上都有这个限制,但是对于更改 IP的攻击,就没办法了

5、投票结果展示:延迟展示,友好展示

页面上投票,JS 立马加1,但是刷新页面,不一定立马展示最新投票结果,返回状态给页面(感谢您的投票!或者 投票成功!至于有没有成功,另说了!)

6、扣量逻辑:常见于一些软件评选之类的投票

这是个杀手锏,后台跑脚本实时监控异常增长(刷票)的项,然后实施扣量逻辑
即对于这个项,投 10 票才算一票

7、Cookie:常用的手段。比较低级

投票后,在客户端写入 Cookie,下次投票时判断 Cookie 是否存在
但是,这种方式非常容易攻破,因为 Cookie 可删除

8、加密选项 ID:对一些投票选项的ID,进行随机加密

加密算法,加Salt,并且设置有效时间,比如5分钟内
服务器端进行解密并且验证

9、nginx限制链接数

ngx_http_limit_conn_module
ngx_http_limit_req_module
nginx_limit_speed_module

可以使用这三个模块来限制,不过这不是一个好的解决方法

10、iptables限制

/sbin/iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT
/sbin/iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask
 32 -j REJECT

具体脚本

#!/bin/bash
# Date: 2015-09-29
# # Author: cpz@erongtu.com
shopt -s -o nounset
export PATH=/usr/bin/:/bin
iptables_log="/tmp/iptables_conf.log"
/sbin/iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT
/sbin/iptables -t filter -A INPUT -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT
while [ true ]; do
  #sleep 1
  for IP in `netstat -an | grep -i ':80 '|grep 'ESTAB' | awk '{print $5}' | cut -d : -f 1 | sort | uniq -c | awk '{if($1 > 30 && $2!="127.0.0.1" ) {print $2}}'`
  do
    /sbin/iptables -L -n | grep $IP >/dev/null || /sbin/iptables -A INPUT -p tcp --dport 80 -s $IP -j DROP
    echo "/sbin/iptables -A INPUT -p tcp -s $IP -j DROP" >> ${iptables_log}
  done
done

以上内容就是小编给大家介绍基于PHP给大家讲解防刷票的一些技巧,希望大家喜欢。

PHP 相关文章推荐
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 #PHP
使用PHP实现生成HTML静态页面
Nov 18 #PHP
php+ajax无刷新上传图片实例代码
Nov 17 #PHP
php计算年龄精准到年月日
Nov 17 #PHP
php实现简单的上传进度条
Nov 17 #PHP
PHP安装threads多线程扩展基础教程
Nov 17 #PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 #PHP
You might like
DC动漫人物排行
2020/03/03 欧美动漫
PHP模块memcached使用指南
2014/12/08 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python cookielib 登录人人网的实现代码
2012/12/19 Python
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
Python魔法方法详解
2019/02/13 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
python中对_init_的理解及实例解析
2019/10/11 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
python和go语言的区别是什么
2020/07/20 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
Python实现对word文档添加密码去除密码的示例代码
2020/12/29 Python
HTML5实现无刷新修改URL的方法
2019/11/14 HTML / CSS
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
国庆节文艺活动方案
2014/02/03 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
试用期自我评价范文
2015/03/10 职场文书
二年级数学教学反思
2016/02/16 职场文书