国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用 Swoole 給應(yīng)用寫個防火墻

Freelander / 3505人閱讀

摘要:原理定時檢測活躍連接數(shù)如果單個連接數(shù)超過臨時封禁超過永久封禁在連接時候直接關(guān)閉永久封禁為了能工作,不能設(shè)置為或永久封禁封禁十分鐘

原理:

定時檢測活躍連接數(shù), 如果單個IP連接數(shù)超過20臨時封禁, 超過100永久封禁(在TCP連接時候直接關(guān)閉)

_GLOBAL_SESSION = [];
$server->_GLOBAL_SESSION["ban"]         = [];
$server->_GLOBAL_SESSION["ban_forever"] = [];

$server->_GLOBAL_SESSION["init_waf_u2"] = "/init_waf_KKDL_d".mt_rand(100000, 9999999);

$server->on("connect", function ($server, $fd, $fi) {
    # 永久封禁
    # 為了能工作, dispatch_mode_mode不能設(shè)置為1或3
    $connection_info = $server->connection_info($fd);
    if( $this->_GLOBAL_SESSION["ban_forever"][$connection_info["remote_ip"]] == 1 ){
        $server->close($fd);
        return;
    }
});
$server->on("request", function ($req, $res) use ($server) {
    # 永久封禁
    if( $this->_GLOBAL_SESSION["ban_forever"][$req->server["remote_addr"]] == 1 ){
        return;
    }
    # 封禁十分鐘
    if( $this->_GLOBAL_SESSION["ban"][$time-$time%600][$req->server["remote_addr"]] == 1 ){
        $res->status(204); $res->end(); return;
    }
    $time = time();

    if ($req->server["request_uri"] == $server->_GLOBAL_SESSION["init_waf_u2"] ){
        $timer_id = $this->tick(500, function(){

            if($this->connection_list(-1, 50) < 51) return 0;
            $connection_list = $this->connection_list(-1, 20000);
            $connection_data = []; // ip -> connection_count

            foreach ($connection_list as $connection_id) {
                $connection = $this->connection_info($connection_id);
                if (!isset($connection_data[$connection["remote_ip"]])) {
                    $connection_data[$connection["remote_ip"]] = 0;
                } else if ($connection_data[$connection["remote_ip"]] > 20) {
                    $this->_GLOBAL_SESSION["ban"][$time-$time%600][$connection["remote_ip"]] = 1;
                } else if ($connection_data[$connection["remote_ip"]] > 100) {
                    $this->_GLOBAL_SESSION["ban_forever"][$connection["remote_ip"]] = 1;
                }
                $connection_data[$connection["remote_ip"]] ++;
                
                $str = "";
                $str .= $connection["remote_ip"];
                $str .= " => ";
                $str .= $connection_data[$connection["remote_ip"]];
                $str .= "
";

                echo $connection["remote_ip"];
                echo " => ";
                echo $connection_data[$connection["remote_ip"]];
                echo "
";
            }
        });
        $res->end($timer_id);
        return true;
    }
});

echo "

You need to run following command to init waf:
";
echo "curl -s http://127.0.0.1:9502".$server->_GLOBAL_SESSION["init_waf_u2"];
$server->start();

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/30410.html

相關(guān)文章

  • 基于 Swoole 的微信掃碼登錄

    摘要:隨著微信的普及,掃碼登錄方式越來越被現(xiàn)在的應(yīng)用所使用。這里基于微信公眾平臺的帶參數(shù)臨時二維碼,并且結(jié)合的服務(wù)實現(xiàn)掃碼登錄。對于用戶掃臨時的二維碼,微信會觸發(fā)相應(yīng)的回調(diào)事件,我們需要在該回調(diào)事件中處理用戶的掃碼行為。 隨著微信的普及,掃碼登錄方式越來越被現(xiàn)在的應(yīng)用所使用。它因為不用去記住密碼,只要有微信號即可方便快捷登錄。微信的開放平臺原生就有支持掃碼登錄的功能,不過大部分人還是在用公眾...

    Half 評論0 收藏0
  • Websocket解析及實現(xiàn)

    摘要:早期的輪詢是通過不斷自動刷新頁面而實現(xiàn)的。長輪詢的另一個問題是缺乏標(biāo)準(zhǔn)實現(xiàn)。服務(wù)器端接到這個請求后作出回應(yīng)并不斷更新連接狀態(tài)以保證客戶端和服務(wù)器端的連接不過期。協(xié)議解析協(xié)議包含兩部分一部分是握手,一部分是數(shù)據(jù)傳輸。 Websocket是什么? Websocket是一個因為應(yīng)用場景越來越復(fù)雜而提出的,針對瀏覽器和web服務(wù)器之間雙向持續(xù)通信而設(shè)計,而且優(yōu)雅地兼容HTTP的協(xié)議(我猜想:同...

    XboxYan 評論0 收藏0
  • 學(xué)習(xí)swoole的心得(一)

    摘要:假如我們要發(fā)布封郵件,用一個循環(huán),循環(huán)遍執(zhí)行發(fā)郵件操作。我采取的是第二種方式噢。安裝完成,需要更改的配置,將放在這個配置中,然后重啟。向服務(wù)器端發(fā)送一個字符串,服務(wù)器會返回一個字符串。以上是簡單的安裝和連同。 什么是swooleswoole是PHP的異步、并行、高性能網(wǎng)絡(luò)通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務(wù)器,異步TCP/UDP網(wǎng)絡(luò)客戶端,異步MySQL,異步R...

    huashiou 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<