基于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 相关文章推荐
用PHP写的MySQL数据库用户认证系统代码
Mar 22 PHP
php 生成饼图 三维饼图
Sep 28 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
基于PHP静态类的原罪详解
May 06 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
详解PHP中的null合并运算符
Dec 30 PHP
php HTML无刷新提交表单
Apr 05 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
2006/11/25 PHP
php变量范围介绍
2012/10/15 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
Python 文件重命名工具代码
2009/07/26 Python
Python简单实现socket信息发送与监听功能示例
2018/01/03 Python
python使用thrift教程的方法示例
2019/03/21 Python
OpenCV 边缘检测
2019/07/10 Python
浅谈Python中的字符串
2020/06/10 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
法律专业实习鉴定
2013/12/22 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
2014年医院工作总结
2014/11/20 职场文书
银行员工考核评语
2014/12/31 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python