nake_api_protect 请求保护器——防止请求被恶意刷
github : https://github.com/xjnotxj/wechat_interaction_auth
--
nake_api_protect
接口请求保护器
,根据 频率 + 次数 的自由组合,来限制 api 受到的恶意请求。
一、参数
params | 取值 | 默认值 | 备注 |
---|---|---|---|
project_name | [string] | "default" | |
identity | "session" / "ip" | "session" | "ip" 则用 redis 做持久化 |
frequency | 见下表 | 无限制 | |
redis | 见下表 | 当 identity="ip" 时必填 |
frequency
:
frequency | 取值类型 | 单位 | 默认值 | 备注 |
---|---|---|---|---|
during | [integer] | 秒 | 0 | >=0 |
times | [integer] | 次数 | 0 | >=0 |
注:若 during 和 times 同时为 0,则视为无限制。
redis
:
若 identity = ip,则需要 redis 参数
params | 取值类型 | 参考值 |
---|---|---|
address | [string]] | "127.0.0.1" |
port | [integer] | 6379 |
二、方法
function | 功能 | 返回值 |
---|---|---|
active | 记录接口请求 | void |
valid | 判断此次请求是否安全 | true/false |
debug | 输出请求记录详情,方便 debug | array |
clear | 清除接口请求记录的次数 | void |
destory | 销毁接口请求保护器 | void |
三、调用
//init nake_api_protect
$nake_api_protect_options = array(
'project_name' => 'mobile_project',
'identity' => 'ip',
'frequency' =>
[
array("during" => 1 * 60, 'times' => 3),
],
'redis' => [
"address" => "127.0.0.1",
"port" => 6379,
],
);
$nake_api_protect = new Nake_api_protect($nake_api_protect_options); //创建实例对象
//use
if (!$nake_api_protect->valid()) {
echo var_dump($nake_api_protect->debug());
echo "Your request is too frequent.";
return;
}
$nake_api_protect->active();
//……
四、实例 - (获取手机号)
方案1:
1、每个用户每分钟只能获取一次
'frequency' =>
[
array("during" => 60, 'times' => 1),
]
方案2:
1、每个用户每分钟只能获取一次
2、每个用户每小时只能获取三次
'frequency' =>
[
array("during" => 60, 'times' => 1),
array("during" => 60 * 60, 'times' => 3),
]
nake_api_protect 请求保护器——防止请求被恶意刷的更多相关文章
- 第106天:Ajax中同步请求和异步请求
同步请求和异步请求的区别 1.同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的.信息错误又要重新 ...
- ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求
通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddlew ...
- Java Web中请求转发和请求包含
1.都是在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在AServle中setAttribute()保存数据在BServlet中由getAtt ...
- Ajax中Get请求与Post请求的区别
Get请求和Post请求的区别 1.使用Get请求时,参数在URL中显示,而使用Post方式,则不会显示出来 2.使用Get请求发送数据量小,Post请求发送数据量大 例子 页面的HTML代码: &l ...
- WebApi系列~基于单请求封装多请求的设计
回到目录 怎么说,单请求封装多请求,这句话确实有点绕了,但还是要看清楚,想明白这到底是怎么一回事,单请求即一次请求(get,post,put,delete),封闭多请求,即在客户端发送的一个请求中可能 ...
- 详细解读XMLHttpRequest(一)同步请求和异步请求
本文主要参考:MDN XMLHttpRequest 让发送一个HTTP请求变得非常容易.你只需要简单的创建一个请求对象实例,打开一个URL,然后发送这个请求.当传输完毕后,结果的HTTP状态以及返回的 ...
- 【读书笔记】iOS网络-同步请求,队列式异步请求,异步请求的区别
一,同步请求的最佳实践. 1,只在后台过程中使用同步请求,除非确定访问的是本地文件资源,否则请不要在主线程上使用. 2,只有在知道返回的数据不会超出应用的内存时才使用同步请求.记住,整个响应体都会位于 ...
- iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range
一.小文件下载 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion ...
- request获取请求头和请求数据
package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...
随机推荐
- CentOS 7下编译安装Boost_1_57_0
之前对库的理解太肤浅(现在也仍很肤浅),导致走了挺多的弯路,现记录以备后查. 现在可以从Boost官网下载到最新的Boost源代码boost_1_57_0.tar.gz. 现将步骤记录如下: 1. 解 ...
- Leetcode_203_Remove Linked List Elements
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/45868027 Remove all elements fr ...
- OpenCV stereo matching 代码 matlab实现视差显示
转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213, 来自:shiter编写程序的艺术 基础知识 计算机视觉是一门研究 ...
- Smali语法汇总(一)
Opcode 操作码(hex) Opcode name 操作码名称 Explanation 说明 Example 示例 00 nop 无操作 0000 - nop 01 move vx, vy 移动v ...
- ubuntu14.04下安装rubinius测试原生线程
因为CRuby(MRI)本身不支持原生多线程,所以想试一下其他ruby解释器实现对原生多线程的支持.于是安装rubinius折腾一下:) 在rubinius官网下载2.4.1源代码,然后驾轻就熟首先b ...
- 【作业2.0】HansBug的5-7次OO作业分析与小结,以及一些个人体会
不知不觉又做了三次作业,容我在本文胡言乱语几句2333. 第五次作业 第五次作业是前面的电梯作业的多线程版本,难度也有了一些提升.(点击就送指导书) 类图 程序的类图结构如下: UML时序图 程序的逻 ...
- 二叉树的建立以及遍历的多种实现(python版)
二叉树是很重要的数据结构,在面试还是日常开发中都是很重要的角色. 首先是建立树的过程,对比C或是C++的实现来讲,其涉及到了较为复杂的指针操作,但是在面向对象的语言中,就不需要考虑指针, 内存等.首先 ...
- phantomjs 爬去动态页面
最近有一个小需求,需要根据用户输入的某宝的店铺 url,检查地址是否存在,并抓取店铺名称.某宝店铺 url 的 title 通常是 xx-xx-xx 的形式,中间的 xx 就是对应的店铺名称. 这个需 ...
- 【模板】最近公共祖先(LCA)
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每 ...
- IT轮子系列(五)——MVC API 文件上传,总有一款是你需要的
前言 在对外提供的接口时,也常常需要提供上传文件的.在这篇文章中会描述三种上传方式. 1.第一款,通过Base64字符上传——PostFromBase64Str 首先,定义上传数据模型.对于模型的定义 ...