基于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 相关文章推荐
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
php判断访问IP的方法
Jun 19 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 PHP
php创建类并调用的实例方法
Sep 25 PHP
php去除数组中为0的元素的实例分析
Nov 17 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
PHP自定义大小验证码的方法详解
2013/06/07 PHP
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
vue实现购物车加减
2020/05/30 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
Python编程实现正则删除命令功能
2017/08/30 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python使用 Beanstalkd 做异步任务处理的方法
2018/04/24 Python
python制作mysql数据迁移脚本
2019/01/01 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python Pandas分组聚合的实现方法
2019/07/02 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
python如何实现word批量转HTML
2020/09/30 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
印度在线购物网站:Paytmmall
2019/07/24 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
2015年植树节活动总结
2015/02/06 职场文书
2015年个人思想总结
2015/03/09 职场文书
公司慰问信范文
2015/03/23 职场文书
工作犯错保证书
2015/05/11 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
mysql 子查询的使用
2022/04/28 MySQL
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang