基于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删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
PHP设计模式之适配器模式定义与用法详解
Apr 03 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
2019/04/23 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
js实现密码强度检验
2017/01/15 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
动态Axios的配置步骤详解
2018/01/12 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
纽约手袋品牌:KARA
2018/03/18 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
大二学生学习个人自我评价
2014/01/19 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
初一英语教学反思
2016/02/15 职场文书