Source profileQuality 77/100

affaan-m/ECC/docs/tr/skills/laravel-security/SKILL.md

laravel-security

Laravel security best practices for authn/authz, validation, CSRF, mass assignment, file uploads, secrets, rate limiting, and secure deployment.

Source repository stars
234,327
Declared platforms
0
Static risk flags
1
Last source update
2026-07-27
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Laravel uygulamalarını yaygın güvenlik açıklarına karşı korumak için kapsamlı güvenlik rehberi.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/affaan-m/ECC --skill "docs/tr/skills/laravel-security"
    Safe inspection promptEditorial

    Inspect the Agent Skill "laravel-security" from https://github.com/affaan-m/ECC/blob/4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38/docs/tr/skills/laravel-security/SKILL.md at commit 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Ne Zaman Aktif Edilir

      Kimlik doğrulama veya yetkilendirme ekleme

      Kimlik doğrulama veya yetkilendirme eklemeKullanıcı girişi ve dosya yüklemelerini işlemeYeni API endpoint'leri oluşturma
    2. 02

      Nasıl Çalışır

      Middleware temel korumalar sağlar (CSRF için VerifyCsrfToken, güvenlik başlıkları için SecurityHeaders).

      Middleware temel korumalar sağlar (CSRF için VerifyCsrfToken, güvenlik başlıkları için SecurityHeaders).Guard'lar ve policy'ler erişim kontrolünü zorlar (auth:sanctum, $this-authorize, policy middleware).Form Request'ler servislere ulaşmadan önce girişi doğrular ve şekillendirir (UploadInvoiceRequest).
    3. 03

      Temel Güvenlik Ayarları

      Production'da APPDEBUG=false

      Production'da APPDEBUG=falseAPPKEY ayarlanmalı ve tehlikeye girdiğinde döndürülmelidirSESSIONSECURECOOKIE=true ve SESSIONSAMESITE=lax ayarlayın (veya hassas uygulamalar için strict)
    4. 04

      Session ve Cookie Sertleştirme

      JavaScript erişimini önlemek için SESSIONHTTPONLY=true ayarlayın

      JavaScript erişimini önlemek için SESSIONHTTPONLY=true ayarlayınYüksek riskli akışlar için SESSIONSAMESITE=strict kullanınLogin ve ayrıcalık değişikliklerinde session'ları yeniden oluşturun
    5. 05

      Kimlik Doğrulama ve Token'lar

      API kimlik doğrulama için Laravel Sanctum veya Passport kullanın

      API kimlik doğrulama için Laravel Sanctum veya Passport kullanınHassas veriler için yenileme akışları ile kısa ömürlü token'ları tercih edinLogout ve tehlikeye girmiş hesaplarda token'ları iptal edin

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 227

    The documentation includes network, browsing, or remote request actions.

    'allowed_origins' => ['https://app.example.com'],

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score77/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars234,327SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    affaan-m/ECC
    Skill path
    docs/tr/skills/laravel-security/SKILL.md
    Commit
    4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    Laravel Güvenlik En İyi Uygulamaları

    Laravel uygulamalarını yaygın güvenlik açıklarına karşı korumak için kapsamlı güvenlik rehberi.

    Ne Zaman Aktif Edilir

    • Kimlik doğrulama veya yetkilendirme ekleme
    • Kullanıcı girişi ve dosya yüklemelerini işleme
    • Yeni API endpoint'leri oluşturma
    • Gizli bilgileri ve ortam ayarlarını yönetme
    • Production deployment'ları sertleştirme

    Nasıl Çalışır

    • Middleware temel korumalar sağlar (CSRF için VerifyCsrfToken, güvenlik başlıkları için SecurityHeaders).
    • Guard'lar ve policy'ler erişim kontrolünü zorlar (auth:sanctum, $this->authorize, policy middleware).
    • Form Request'ler servislere ulaşmadan önce girişi doğrular ve şekillendirir (UploadInvoiceRequest).
    • Rate limiting, auth kontrolleri ile birlikte kötüye kullanım koruması ekler (RateLimiter::for('login')).
    • Veri güvenliği encrypted cast'lerden, mass-assignment korumalarından ve signed route'lardan gelir (URL::temporarySignedRoute + signed middleware).

    Temel Güvenlik Ayarları

    • Production'da APP_DEBUG=false
    • APP_KEY ayarlanmalı ve tehlikeye girdiğinde döndürülmelidir
    • SESSION_SECURE_COOKIE=true ve SESSION_SAME_SITE=lax ayarlayın (veya hassas uygulamalar için strict)
    • Doğru HTTPS algılama için güvenilir proxy'leri yapılandırın

    Session ve Cookie Sertleştirme

    • JavaScript erişimini önlemek için SESSION_HTTP_ONLY=true ayarlayın
    • Yüksek riskli akışlar için SESSION_SAME_SITE=strict kullanın
    • Login ve ayrıcalık değişikliklerinde session'ları yeniden oluşturun

    Kimlik Doğrulama ve Token'lar

    • API kimlik doğrulama için Laravel Sanctum veya Passport kullanın
    • Hassas veriler için yenileme akışları ile kısa ömürlü token'ları tercih edin
    • Logout ve tehlikeye girmiş hesaplarda token'ları iptal edin

    Örnek route koruması:

    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Route;
    
    Route::middleware('auth:sanctum')->get('/me', function (Request $request) {
        return $request->user();
    });
    

    Parola Güvenliği

    • Hash::make() ile parolaları hash'leyin ve asla düz metin saklamayın
    • Sıfırlama akışları için Laravel'in password broker'ını kullanın
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Validation\Rules\Password;
    
    $validated = $request->validate([
        'password' => ['required', 'string', Password::min(12)->letters()->mixedCase()->numbers()->symbols()],
    ]);
    
    $user->update(['password' => Hash::make($validated['password'])]);
    

    Yetkilendirme: Policy'ler ve Gate'ler

    • Model seviyesi yetkilendirme için policy'leri kullanın
    • Controller'larda ve servislerde yetkilendirmeyi zorlayın
    $this->authorize('update', $project);
    

    Route seviyesi zorlama için policy middleware kullanın:

    use Illuminate\Support\Facades\Route;
    
    Route::put('/projects/{project}', [ProjectController::class, 'update'])
        ->middleware(['auth:sanctum', 'can:update,project']);
    

    Validation ve Veri Temizleme

    • Her zaman Form Request'ler ile girişleri doğrulayın
    • Sıkı validation kuralları ve tip kontrolleri kullanın
    • Türetilmiş alanlar için request payload'larına asla güvenmeyin

    Mass Assignment Koruması

    • $fillable veya $guarded kullanın ve Model::unguard() kullanmaktan kaçının
    • DTO'ları veya açık attribute mapping'i tercih edin

    SQL Injection Önleme

    • Eloquent veya query builder parametre binding kullanın
    • Kesinlikle gerekli olmadıkça raw SQL kullanmaktan kaçının
    DB::select('select * from users where email = ?', [$email]);
    

    XSS Önleme

    • Blade varsayılan olarak çıktıyı escape eder ({{ }})
    • {!! !!} sadece güvenilir, temizlenmiş HTML için kullanın
    • Zengin metni özel bir kütüphane ile temizleyin

    CSRF Koruması

    • VerifyCsrfToken middleware'ini etkin tutun
    • Formlara @csrf ekleyin ve SPA istekleri için XSRF token'ları gönderin

    Sanctum ile SPA kimlik doğrulaması için, stateful isteklerin yapılandırıldığından emin olun:

    // config/sanctum.php
    'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', 'localhost')),
    

    Dosya Yükleme Güvenliği

    • Dosya boyutunu, MIME tipini ve uzantısını doğrulayın
    • Mümkün olduğunda yüklemeleri public path dışında saklayın
    • Gerekirse dosyaları malware için tarayın
    final class UploadInvoiceRequest extends FormRequest
    {
        public function authorize(): bool
        {
            return (bool) $this->user()?->can('upload-invoice');
        }
    
        public function rules(): array
        {
            return [
                'invoice' => ['required', 'file', 'mimes:pdf', 'max:5120'],
            ];
        }
    }
    
    $path = $request->file('invoice')->store(
        'invoices',
        config('filesystems.private_disk', 'local') // bunu public olmayan bir disk'e ayarlayın
    );
    

    Rate Limiting

    • Auth ve yazma endpoint'lerinde throttle middleware'i uygulayın
    • Login, password reset ve OTP için daha sıkı limitler kullanın
    use Illuminate\Cache\RateLimiting\Limit;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\RateLimiter;
    
    RateLimiter::for('login', function (Request $request) {
        return [
            Limit::perMinute(5)->by($request->ip()),
            Limit::perMinute(5)->by(strtolower((string) $request->input('email'))),
        ];
    });
    

    Gizli Bilgiler ve Kimlik Bilgileri

    • Gizli bilgileri asla kaynak kontrolüne commit etmeyin
    • Ortam değişkenlerini ve gizli yöneticileri kullanın
    • Maruz kalma sonrası anahtarları döndürün ve session'ları geçersiz kılın

    Şifreli Attribute'lar

    Bekleyen hassas sütunlar için encrypted cast'leri kullanın.

    protected $casts = [
        'api_token' => 'encrypted',
    ];
    

    Güvenlik Başlıkları

    • Uygun yerlerde CSP, HSTS ve frame koruması ekleyin
    • HTTPS yönlendirmelerini zorlamak için güvenilir proxy yapılandırması kullanın

    Başlıkları ayarlamak için örnek middleware:

    use Illuminate\Http\Request;
    use Symfony\Component\HttpFoundation\Response;
    
    final class SecurityHeaders
    {
        public function handle(Request $request, \Closure $next): Response
        {
            $response = $next($request);
    
            $response->headers->add([
                'Content-Security-Policy' => "default-src 'self'",
                'Strict-Transport-Security' => 'max-age=31536000', // tüm subdomain'ler HTTPS olduğunda includeSubDomains/preload ekleyin
                'X-Frame-Options' => 'DENY',
                'X-Content-Type-Options' => 'nosniff',
                'Referrer-Policy' => 'no-referrer',
            ]);
    
            return $response;
        }
    }
    

    CORS ve API Erişimi

    • config/cors.php'de origin'leri kısıtlayın
    • Kimlik doğrulamalı route'lar için wildcard origin'lerden kaçının
    // config/cors.php
    return [
        'paths' => ['api/*', 'sanctum/csrf-cookie'],
        'allowed_methods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
        'allowed_origins' => ['https://app.example.com'],
        'allowed_headers' => [
            'Content-Type',
            'Authorization',
            'X-Requested-With',
            'X-XSRF-TOKEN',
            'X-CSRF-TOKEN',
        ],
        'supports_credentials' => true,
    ];
    

    Loglama ve PII

    • Parolaları, token'ları veya tam kart verilerini asla loglamayın
    • Yapılandırılmış loglarda hassas alanları redakte edin
    use Illuminate\Support\Facades\Log;
    
    Log::info('User updated profile', [
        'user_id' => $user->id,
        'email' => '[REDACTED]',
        'token' => '[REDACTED]',
    ]);
    

    Bağımlılık Güvenliği

    • Düzenli olarak composer audit çalıştırın
    • Bağımlılıkları dikkatle sabitleyin ve CVE'lerde hızlıca güncelleyin

    Signed URL'ler

    Geçici, kurcalamaya dayanıklı bağlantılar için signed route'ları kullanın.

    use Illuminate\Support\Facades\URL;
    
    $url = URL::temporarySignedRoute(
        'downloads.invoice',
        now()->addMinutes(15),
        ['invoice' => $invoice->id]
    );
    
    use Illuminate\Support\Facades\Route;
    
    Route::get('/invoices/{invoice}/download', [InvoiceController::class, 'download'])
        ->name('downloads.invoice')
        ->middleware('signed');
    

    Alternatives

    Compare before choosing