zoukankan      html  css  js  c++  java
  • 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), 
    ]
    
  • 相关阅读:
    关于Visual Studio中的TraceDebugging文件夹
    没有App打得开发证书, 收不到推送
    转:ios应用崩溃日志揭秘
    转 iOS:NSAttributedString
    [UIDevice currentDevice].model
    转: Your build settings specify a provisioning profile with the UUID, no provisioning profile was found
    NSTimer 增加引用计数, 导致内存泄露,
    matplotlib基础(2)
    matplotlib基础
    《python自然语言处理》(1)
  • 原文地址:https://www.cnblogs.com/xjnotxj/p/9064616.html
Copyright © 2011-2022 走看看