簡體   English   中英

防潮-如何限制每秒2個請求

[英]php - Antiflood - how to limit 2 requests per second

我有防洪功能

if (!isset($_SESSION)) {
    session_start();
}

if($_SESSION['last_session_request'] > time() - 1){
die();
}

$_SESSION['last_session_request'] = time();

如果用戶在1秒鍾內請求多個請求,腳本將自行停止。 我想做的是,我需要每秒最多允許2個請求(而不是1個)。 我怎樣才能做到這一點 ?

我會這樣:

<?
$time_interval = 1;#In seconds
$max_requests = 2;
$fast_request_check = ($_SESSION['last_session_request'] > time() - $time_interval);

if (!isset($_SESSION)) 
{
    # This is fresh session, initialize session and its variables
    session_start();
    $_SESSION['last_session_request'] = time();
    $_SESSION['request_cnt'] = 1;
}
elseif($fast_request_check && ($_SESSION['request_cnt'] < $max_requests))
{
   # This is fast, consecutive request, but meets max requests limit
   $_SESSION['request_cnt']++;
}
elseif($fast_request_check)
{
    # This is fast, consecutive request, and exceeds max requests limit - kill it
    die();
}
else
{
    # This request is not fast, so reset session variables
    $_SESSION['last_session_request'] = time();
    $_SESSION['request_cnt'] = 1;
}

但是,有一件事-如果您試圖做這件事之王,它將無法保護您免受DDoS攻擊。 可以很容易地刪除PHP中的會話,即使沒有,也可以從一個客戶端創建多個會話。 如果您想進一步了解保護,請閱讀此討論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM