Mobile App Wiki

Mobile App Wiki

mobileapp.wiki

Ana Sayfa

Kategoriler

mobileapp.wiki

Mobile App Wiki

Mobil uygulama geliştirme bilgi tabanı

GizlilikAna SayfaSitemapRSS
© 2026 mobileapp.wiki
Ana Sayfa/Altyapı/Rate Limiting & API Security
Altyapı3 dk okuma

Rate Limiting & API Security

Mobil uygulama backend'leri için rate limiting ve API güvenliği. Token bucket, sliding window, CORS, input validation ve security headers.

rate limitingapi securitytoken bucketsliding windowcorsinput validationhelmetsecurity headers429api keyexpressfastify

İçindekiler

Rate Limiting Nedir?Rate Limiting AlgoritmalarıFixed WindowSliding WindowToken BucketBackend ImplementasyonuFastify (@fastify/rate-limit)Express (express-rate-limit)Redis Tabanlı Distributed LimitingPer-User vs Per-IP vs Per-Endpoint429 Too Many Requests HandlingAPI Key AuthenticationCORS YapılandırmasıInput Validation ve SanitizationSecurity Headers

Rate Limiting Nedir?

Rate limiting, belirli bir zaman diliminde bir API endpoint'ine yapılabilecek istek sayısını sınırlama mekanizmasıdır. Mobil uygulamanızın backend'ini korumak için en temel güvenlik katmanlarından biridir.

Neden gerekli?

  • DDoS saldırılarından korunma
  • Brute force login denemelerini engelleme
  • API maliyetlerini kontrol altında tutma
  • Fair usage sağlama
  • Sunucu stabilitesini koruma

Rate Limiting Algoritmaları

Fixed Window

En basit yaklaşım. Belirli bir zaman penceresi içinde izin verilen istek sayısını sayar.

  • Avantaj: Implementasyonu kolay, bellek kullanımı düşük
  • Dezavantaj: Pencere sınırında burst problemi

Sliding Window

Fixed window'un geliştirilmiş hali. Mevcut ve önceki pencerenin ağırlıklı ortalamasını kullanır.

  • Avantaj: Burst problemini büyük ölçüde çözer
  • Dezavantaj: Biraz daha fazla hesaplama gerektirir

Token Bucket

Bir kovaya belirli hızla token eklenir, her istek bir token harcar. Kova boşalırsa istek reddedilir.

  • Avantaj: Kısa süreli burst'lere izin verir ama uzun vadede limiti korur
  • Dezavantaj: Implementasyonu biraz daha karmaşık

Çoğu production sistemi sliding window veya token bucket kullanır.

Backend Implementasyonu

Fastify (@fastify/rate-limit)

  • Global veya route bazında limit tanımlanabilir
  • Redis backend ile distributed rate limiting
  • keyGenerator ile IP, user ID veya API key bazlı sınırlama

Express (express-rate-limit)

  • windowMs ve max parametreleri ile temel konfigürasyon
  • rate-limit-redis ile Redis backend desteği
  • Trust proxy ayarını doğru yapın (load balancer arkasındaysanız)

Redis Tabanlı Distributed Limiting

Birden fazla sunucu instance'ınız varsa in-memory rate limiting yeterli olmaz. Redis ile tüm instance'lar aynı sayacı paylaşır.

Per-User vs Per-IP vs Per-Endpoint

StratejiKullanım AlanıDikkat Edilecekler
Per-IPGenel koruma, loginNAT arkasında aynı IP paylaşımı
Per-UserAuthenticated endpoint'lerToken bazlı sayım
Per-EndpointFarklı endpoint'lere farklı limit/login sıkı, /feed gevşek
Per-API Key3rd party entegrasyonlarPlan bazlı limit

En iyi yaklaşım bunları birleştirmektir. Orneğin: login'de per-IP 5/dk + per-user 10/dk.

429 Too Many Requests Handling

Backend tarafı:

  • Retry-After header'ı ekleyin
  • X-RateLimit-Limit ve X-RateLimit-Remaining header'ları gönderin

Client tarafı:

  • 429 aldığında Retry-After header'ına göre bekleyin
  • Exponential backoff uygulayın
  • Kullanıcıya anlamlı mesaj gösterin
  • Maksimum deneme sayısı belirleyin

API Key Authentication

  • API key'i header'da gönderin (X-API-Key), URL parametresi olarak asla
  • Key'leri hashleyerek saklayın
  • Key rotation mekanizması kurun
  • Farklı key'lere farklı scope atayın

CORS Yapılandırması

Mobil native uygulamalarda CORS uygulanmaz ama API'niz hem web hem mobil'e hizmet veriyorsa doğru yapılandırma şarttır.

  • origin'i * yerine spesifik domain'lere sınırlayın
  • credentials: true kullanıyorsanız wildcard origin kullanamazsınız
  • Preflight cache süresi ayarlayın
  • Sadece gerekli HTTP method'larına izin verin

Input Validation ve Sanitization

Gelen her veriyi güvenilmez kabul edin.

  • Request body'yi schema ile validate edin (Zod, Joi, Yup)
  • SQL injection'a karşı parametrize sorgular kullanın
  • XSS'e karşı HTML tag'lerini sanitize edin
  • Dosya yükleme'de tip ve boyut kontrolü yapın

Security Headers

Helmet.js (Express) veya @fastify/helmet (Fastify) ile otomatik eklenebilir:

  • Strict-Transport-Security: HTTPS zorunluluğu
  • X-Content-Type-Options: nosniff
  • X-Frame-Options: DENY
  • Content-Security-Policy: kaynak kısıtlamaları

API güvenliği katmanlı bir yaklaşım gerektirir. Rate limiting, authentication, input validation ve security headers birlikte uygulandığında etkili bir savunma hattı oluşturur.

Bu makaleyi nasıl buldunuz?

Paylaş

← Önceki

Firebase

Sonraki →

Supabase

İlgili Makaleler

Firebase

Google Firebase mobil uygulama platformu rehberi. Authentication, Firestore, Cloud Functions, Crashlytics, Analytics, Remote Config ve FCM detayları.

Supabase

Açık kaynaklı Firebase alternatifi Supabase rehberi. PostgreSQL, Row Level Security, Edge Functions, realtime subscriptions ve mobil entegrasyon.

Analytics Platformları

Mobil uygulama analitik platformları karşılaştırma rehberi. Firebase Analytics, Mixpanel, Amplitude ve PostHog ile event ve retention ölçümü.

Remote Config & Feature Flags

Remote Config ve Feature Flags yönetim rehberi. Firebase Remote Config, LaunchDarkly ve Statsig ile gradual rollout ve kill switch stratejileri.

CDN & Asset Delivery

CDN ve asset delivery optimizasyon rehberi. Cloudflare, AWS CloudFront ve Bunny CDN karşılaştırması, image optimization ve cache stratejileri detayları.