PHP ile API Rate Limiting (İstek Sınırlandırma)

Modern API sistemlerinde en önemli güvenlik önlemlerinden biri Rate Limiting'dir. Bu sistem sayesinde belirli bir süre içinde yapılabilecek istek sayısı sınırlandırılır.

Rate Limiting Nedir?

Rate Limiting, bir kullanıcının belirli zaman diliminde yapabileceği istek sayısını sınırlar. Bu sayede spam ve DDoS saldırıları önlenebilir.

💡 API güvenliği için JWT kadar kritik bir sistemdir.

IP Tabanlı Limit Sistemi

Basit Rate Limit
<?php

$ip = $_SERVER['REMOTE_ADDR'];
$limit = 5;
$timeWindow = 60;

$filename = "rate_limit_" . md5($ip) . ".txt";

if(!file_exists($filename)){
    file_put_contents($filename, "1|" . time());
}else{
    list($count,$timestamp) = explode("|", file_get_contents($filename));

    if(time() - $timestamp < $timeWindow){
        if($count >= $limit){
            http_response_code(429);
            echo json_encode(["error"=>"Çok fazla istek"]);
            exit;
        }
        $count++;
    }else{
        $count = 1;
        $timestamp = time();
    }

    file_put_contents($filename, $count."|".$timestamp);
}

?>

Token Bazlı Limit

<?php

$token = $_SERVER['HTTP_AUTHORIZATION'];

$limit = 10;
$key = "rate_token_" . md5($token);

?>

Veritabanı Tabanlı Rate Limit

<?php

$query = $db->prepare("SELECT count FROM api_limits WHERE ip=?");
$query->execute([$ip]);

?>

Neden Önemlidir?

  • DDoS koruması sağlar
  • API abuse engeller
  • Sunucu yükünü azaltır
  • Spam botları durdurur
Güvenlik İpucu: Rate Limiting + JWT birlikte kullanılmalıdır.