mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-05 00:33:27 +08:00
* Add Turkish (tr) docs and update README Add a full set of Turkish documentation under docs/tr (agents, changelog, CLAUDE guide, contributing, code of conduct, and many agents/commands/skills/rules files). Update README to include a link to the Turkish docs and increment the supported language count from 5 to 6. This commit adds localized guidance and references to help Turkish-speaking contributors and users. * Update docs/tr/TROUBLESHOOTING.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/tr/README.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * docs(tr): fix license link and update readmes Update Turkish docs: change license badge link to point to repository root (../../LICENSE), increment displayed language count from 5 to 6, and remove two outdated related links from docs/tr/examples/README.md to keep references accurate. * Update docs/tr/commands/instinct-import.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * Update docs/tr/commands/checkpoint.md Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
8.2 KiB
8.2 KiB
name, description, origin
| name | description | origin |
|---|---|---|
| laravel-security | Laravel security best practices for authn/authz, validation, CSRF, mass assignment, file uploads, secrets, rate limiting, and secure deployment. | ECC |
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çinSecurityHeaders). - 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+signedmiddleware).
Temel Güvenlik Ayarları
- Production'da
APP_DEBUG=false APP_KEYayarlanmalı ve tehlikeye girdiğinde döndürülmelidirSESSION_SECURE_COOKIE=trueveSESSION_SAME_SITE=laxayarlayın (veya hassas uygulamalar içinstrict)- 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=trueayarlayın - Yüksek riskli akışlar için
SESSION_SAME_SITE=strictkullanı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ı
$fillableveya$guardedkullanın veModel::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ı
VerifyCsrfTokenmiddleware'ini etkin tutun- Formlara
@csrfekleyin 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
throttlemiddleware'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');