design

Laravel'de API Security: SQL Injection & XSS'den Korunma Rehberi

April 4, 2025


1. API Güvenlik Tehditleri ⚠️

En yaygın API saldırıları:

  • SQL Injection 🕳️
  • XSS (Cross-Site Scripting) 📜
  • CSRF (Cross-Site Request Forgery) 🏹
  • DDOS ⚡
  • Authentication Bypass 🕵️


// Güvensiz örnek (SQL Injection açığı)
$users = DB::select("SELECT * FROM users WHERE email = '".$request->email."'");


2. SQL Injection'dan Korunma 🛡️

Laravel Eloquent Kullanımı

// Güvenli yöntem
$user = User::where('email', $request->email)->first();


Parametre Bağlama (Parameter Binding)

// Raw query'lerde bile güvenli
DB::select('SELECT * FROM users WHERE email = ?', [$request->email]);


Stored Procedure Kullanımı

DB::select('CALL get_user_by_email(?)', [$request->email]);


3. XSS (Cross-Site Scripting) Koruması ✂️

Blade Template Otomatik Escaping

<!-- Güvenli çıktı -->
{{ $userInput }} 

<!-- HTML çıktısı (dikkatli kullanın) -->
{!! $sanitizedHtml !!}


HTML Purifier Paketi

composer require mews/purifier


use Mews\Purifier\Facades\Purifier;

$cleanHtml = Purifier::clean($dirtyHtml);


4. CSRF Koruma Mekanizmaları 🛡️

Formlar İçin Otomatik Koruma


<form method="POST">
    @csrf
    <!-- ... -->
</form>


API'ler İçin Özel Middleware

// app/Http/Middleware/VerifyApiCsrfToken.php
protected $except = [
    'api/webhook/*' // CSRF koruması istisnaları
];


5. Rate Limiting ile DDOS Koruma ⚡

// app/Providers/RouteServiceProvider.php
protected function configureRateLimiting()
{
    RateLimiter::for('api', function (Request $request) {
        return Limit::perMinute(60)->by($request->ip());
    });
}


6. Güvenlik Header'ları 🚧

Middleware ile Zorunlu Header'lar

// app/Http/Middleware/SecureHeaders.php
$response->headers->set('X-Content-Type-Options', 'nosniff');
$response->headers->set('X-Frame-Options', 'DENY');
$response->headers->set('X-XSS-Protection', '1; mode=block');

7. Laravel Security Paketleri 📦

PaketAçıklamaKurulumlaravel-securityÇeşitli güvenlik önlemlericomposer require spatie/laravel-securitycorsCORS yönetimicomposer require fruitcake/laravel-corsfirewallIP bazlı filtrelemecomposer require pragmarx/firewall


8. Güvenlik Test Araçları 🧪

SQL Injection Testi

sqlmap -u "http://site.com/api/users?id=1" --risk=3 --level=5


XSS Testi

// Postman'da test
fetch('/api/search?q=<script>alert(1)</script>')

Güvenlik Önlemleri Karşılaştırması 📊

TehditKoruma YöntemiEtkinlikLaravel DesteğiSQL Inj.Eloquent/Param Binding⭐⭐⭐⭐⭐

FullXSSBlade Escaping/HTML Purifier⭐⭐⭐⭐

PartialCSRFVerifyCsrfToken Middleware⭐⭐⭐⭐⭐

FullDDOSRate Limiting⭐⭐⭐Full

Sonuç: Sağlam Bir API Kalesi 🏰

Bu önlemlerle:

  • Saldırı yüzeyinizi %90 azaltın 📉
  • Kullanıcı verilerini koruyun 🔐
  • API güvenilirliğini artırın 🚀
API güvenliği için hangi önlemleri alıyorsunuz? Yorumlarda paylaşın! 💬
Serimizin sonraki yazıları için takipte kalın! 🎯

#Laravel #APISecurity #WebSecurity #SQLInjection #XSS 🔒

5 + 6 =