基于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 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
ThinkPHP的模版中调用session数据的方法
Jul 01 PHP
php获取apk包信息的方法
Aug 15 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
常见PHP数据库解决方案分析介绍
Sep 24 PHP
php array_udiff_assoc 计算两个数组的差集实例
Nov 12 PHP
php json中文编码为null的解决办法
Dec 14 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery功能函数详解
2015/02/01 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
BootStrap中
2016/12/10 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
Promise扫盲贴
2019/06/24 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
[48:48]完美世界DOTA2联赛PWL S3 Magama vs GXR 第一场 12.19
2020/12/24 DOTA
复制粘贴功能的Python程序
2008/04/04 Python
python中ConfigParse模块的用法
2014/09/29 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
使用Python写一个小游戏
2018/04/02 Python
python查看数据类型的方法
2019/10/12 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
python爬虫基础之urllib的使用
2020/12/31 Python
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
大学生通用个人的自我评价
2014/02/10 职场文书
餐饮商业计划书范文
2014/04/29 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript