基于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 相关文章推荐
域名查询代码公布
Oct 09 PHP
PHP实现采集程序原理和简单示例代码
Mar 18 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
php smarty函数扩展
Mar 15 PHP
php 保留字列表
Oct 04 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
如何通过Linux命令行使用和运行PHP脚本
Jul 29 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
php上传后台无法收到数据解决方法
Oct 28 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 PHP
PHP7 其他修改
Mar 09 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
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
PHP伪静态页面函数附使用方法
2008/06/20 PHP
php 分库分表hash算法
2009/11/12 PHP
10款实用的PHP开源工具
2015/10/23 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
Python编写一个闹钟功能
2017/07/11 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
Python面向对象实现方法总结
2020/08/12 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
新闻学毕业生自荐信
2013/11/15 职场文书
信息系统专业个人求职信范文
2013/12/07 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
社区义诊活动总结
2014/04/30 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python