affaan-m/ECC

laravel-security

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

77CollectingNetwork access
See how to use itView GitHub source
npx skills add https://github.com/affaan-m/ECC --skill "docs/tr/skills/laravel-security"
Automated source guide

Source checked Jul 28, 2026·Refresh due Oct 26, 2026

Reorganized from the pinned upstream SKILL.md

Turn laravel-security's source instructions into a guide you can follow

According to the pinned SKILL.md from affaan-m/ECC: Laravel uygulamalarını yaygın güvenlik açıklarına karşı korumak için kapsamlı güvenlik rehberi.

npx skills add https://github.com/affaan-m/ECC --skill "docs/tr/skills/laravel-security"
Check the pinned source

Best fit

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

Bring this context

  • A concrete task that matches the documented purpose of laravel-security.
  • The files, examples, or context the task depends on.
  • Your constraints, target environment, and definition of done.

Expected outputs

  • A result that follows the pinned laravel-security instructions.
  • A concise record of assumptions, inputs used, and unresolved questions.
  • A final check against the source workflow and relevant permission signals.

Key source sections

Read laravel-security through these 5 source sections

Sections are extracted automatically from the pinned SKILL.md and link back to the source.

01

Ne Zaman Aktif Edilir

Kimlik doğrulama veya yetkilendirme ekleme

SKILL.md · Ne Zaman Aktif Edilir
Kimlik doğrulama veya yetkilendirme eklemeKullanıcı girişi ve dosya yüklemelerini işlemeYeni API endpoint'leri oluşturma
02

Nasıl Çalışır

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

SKILL.md · 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).
03

Temel Güvenlik Ayarları

Production'da APPDEBUG=false

SKILL.md · Temel Güvenlik Ayarları
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)
04

Session ve Cookie Sertleştirme

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

SKILL.md · Session ve Cookie Sertleştirme
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
05

Kimlik Doğrulama ve Token'lar

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

SKILL.md · Kimlik Doğrulama ve Token'lar
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

SkillSignal prompt templates

Provide the task, context, and acceptance criteria

These prompts were written by SkillSignal from the source structure; they are not upstream text.

Task-start prompt

Confirm source fit, inputs, and outputs before acting.

Use laravel-security to help me with: [specific task]. Context: [files, data, or background]. Constraints: [environment, scope, and prohibited actions]. Before acting, check the pinned SKILL.md and explain which sections apply, what inputs are still missing, and what you will deliver.

Source-guided execution

Make the Agent explicitly follow the key extracted sections.

Apply the pinned laravel-security source to [task]. Pay particular attention to these source sections: “Ne Zaman Aktif Edilir”, “Nasıl Çalışır”, “Temel Güvenlik Ayarları”, “Session ve Cookie Sertleştirme”, “Kimlik Doğrulama ve Token'lar”. Preserve the important decision at each step. Mark facts not covered by the source as “needs confirmation” instead of inventing them. Then verify the result against my acceptance criteria: [criteria].

Result-review prompt

Check omissions, permissions, and source drift before delivery.

Review the current laravel-security result: (1) does it satisfy the original task; (2) were any applicable steps or limits in the pinned SKILL.md missed; (3) did it perform any unauthorized file, command, network, or data action; and (4) which conclusions remain unverified? List issues first, then fix only what the source or user authorization supports.

Output checklist

Verify each item before delivery

The task matches the purpose documented in the SKILL.md.

The source section “Ne Zaman Aktif Edilir” has been checked.

The source section “Nasıl Çalışır” has been checked.

The source section “Temel Güvenlik Ayarları” has been checked.

The source section “Session ve Cookie Sertleştirme” has been checked.

Inputs, constraints, and acceptance criteria are explicit.

Unverified facts, compatibility, and outcome claims are clearly marked.

Any file, command, network, or data action has been reviewed.

Choose a different workflow

When another Skill is the better fit

FAQ

What does laravel-security do?

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

How do I start using laravel-security?

The catalog detected this source-specific install command: npx skills add https://github.com/affaan-m/ECC --skill "docs/tr/skills/laravel-security". Inspect the command and pinned source before running it.

Which Agent platforms does it declare?

No dedicated Agent platform is declared in the pinned source record.

Repository stars
234,327
Repository forks
35,711
Quality
77/100
Source repository last pushed

Quality breakdown

Based on traceable docs and repository signals; stars are not treated as quality.

77/100
Documentation27/30
Specificity14/25
Maintenance20/20
Trust signals16/25
View original Skill.mdThis page is parsed directly from the repository SKILL.md without editorial rewriting. Collected: Jul 28, 2026 · about 3 min

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');
Source repo
affaan-m/ECC
Skill path
docs/tr/skills/laravel-security/SKILL.md
Commit SHA
4e973d3eaf92
Repository license
MIT
Data collected