swoole不断的切换前端链接方法 防止攻击

本文介绍使用Swoole实现动态更新前端链接后缀的方法,以防御DDoS攻击。通过定时更新URL后缀并通知客户端,确保了连接的安全性和有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

php不断的切换前端链接方法 防止攻击


swoole写法  每分钟生成一次url后缀 返回到客户端让他们更新
$ws->on('message', function ($ws, $frame) {
    var_dump($frame);
    $data = json_decode($frame->data, 'true');
    $tag = intval($data['tag']);

    /*初始化玩家信息和pc信息*/
    if ($tag == 1) {
        /*用户第一次加载初始化*/
        $data = array('fid' => $frame->fd);
        $isOk = commoninsertinfo($data, fid');
        if ($isOk) {
            $sql = 'select houzhui from urlhouzhui where id=1 limit 1';
            $houzhui = commongetinfo($sql)[0]['houzhui'];
            $ws->push($frame->fd, json_encode(array('success' => 1, 'msg' => '初始化成功', 'data' => array('tag' => $tag, 'list' => array('houzhui' => $houzhui)))));
        } else {
            $ws->push($frame->fd, json_encode(array('success' => 0, 'msg' => '请重新刷新页面', 'data' => array('tag' => $tag))));
        }
    }
});
//定时器要写在WorkerStart这个里面哦 $ws->on('WorkerStart', function ($serv, $worker_id) { /*1分钟更新一次url 防止ddos攻击*/ swoole_timer_tick(60000, function ($timer_id) use ($serv) { $houzhui = getRandom(8, 1); commonupdateinfo(array('houzhui' => $houzhui), 'id', 1, 'urlhouzhui'); $sql = 'select fid from fid'; $fidlist = commongetinfo($sql); if (!empty($fidlist)) { foreach ($fidlist as $k => $v) { $serv->push($v['fid'], json_encode(array('success' => 1, 'msg' => '生成成功', 'data' => array('tag' => 1, 'list' => array('houzhui' => $houzhui))))); } } }); });





php这里也要更新  请求的接口地址也要读取数据库更新过来
  /*读取url后缀*/
        $sql = 'select houzhui from urlhouzhui where id=1 limit 1';
        $houzhui = $this->commongetinfo($sql)[0]['houzhui'];
        if (ACTION_NAME != "index" && ACTION_NAME != "huodongguize") {
            $pos = strpos(ACTION_NAME, strval($houzhui));
            if (!is_numeric($pos)) {
                if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){
                    echo json_encode(array('success' => 0, 'msg' => '停留时间过长,你需要返回上个页面,并且进行刷新后进行操作'));
                    exit();
                }else{
                    header("Content-type:text/html;charset=utf-8");
                    echo "";
                    exit;
                };
            }else{
                $url=rtrim(ACTION_NAME,$houzhui);
                $this->$url();
                exit();
            }
        }


查看原文:http://newmiracle.cn/?p=2049
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值