通过redis集合方式实现接口防刷,进入黑名单

//接口防刷
    public function InterfaceBrush(){
        $redis = new \Redis();
        $redis->connect('127.0.0.1' , '6379', '' );

        if(time() - $redis->zScore('black_list',$_SERVER['REMOTE_ADDR']) < 15){//小于15秒
            return json_encode(['code' => 303, 'msg' => '接口访问已达到上限'],JSON_UNESCAPED_UNICODE);
        }

        if ($redis->get($_SERVER['REMOTE_ADDR'])) {

            if ($redis->get($_SERVER['REMOTE_ADDR']) < 30) {//小于30次
                $redis->incr($_SERVER['REMOTE_ADDR']);
            } else {
                $redis->zAdd( 'black_list' , time() ,$_SERVER['REMOTE_ADDR']);
                return json_encode(['code' => 304, 'msg' => '接口访问已达到上限'],JSON_UNESCAPED_UNICODE);
            }
        } else {
            $redis->set($_SERVER['REMOTE_ADDR'], 1, 10);//有效时间为10秒
        }

    }
Logo

网易易盾是国内领先的数字内容风控服务商,依托网易二十余年的先进技术和一线实践经验沉淀,为客户提供专业可靠的安全服务,涵盖内容安全、业务安全、应用安全、安全专家服务四大领域,全方位保障客户业务合规、稳健和安全运营。

更多推荐