0%
الأمان في Laravel: دليل أفضل الممارسات

الأمان في Laravel: دليل أفضل الممارسات

اكتشف أفضل ممارسات الأمان لتطبيقات Laravel الخاصة بك

I

InSkillCoach

· دقيقة

الأمان في Laravel: دليل أفضل الممارسات

يُعدّ الأمان جانبًا حاسمًا في تطوير الويب الحديث. يتضمن Laravel العديد من ميزات الأمان افتراضيًا، لكن من المهم فهم كيفية استخدامها بفعالية.

1. الحماية من هجمات CSRF

يحمي Laravel نماذجك تلقائيًا من هجمات CSRF (Cross-Site Request Forgery).

<form method="POST" action="/profile">
    @csrf
    <!-- Champs du formulaire -->
</form>

إعداد مخصص

// config/session.php
return [
    'token_lifetime' => 120, // minutes
];

2. الحماية من هجمات XSS

الترميز التلقائي للمخرجات مع Blade

{{ $userInput }} // Échappé automatiquement
{!! $trustedHtml !!} // Non échappé - à utiliser avec précaution

Middleware للأمان

// app/Http/Middleware/SecurityHeaders.php
public function handle($request, Closure $next)
{
    $response = $next($request);
    
    $response->headers->set('X-XSS-Protection', '1; mode=block');
    $response->headers->set('X-Frame-Options', 'SAMEORIGIN');
    $response->headers->set('X-Content-Type-Options', 'nosniff');
    
    return $response;
}

3. المصادقة والتفويض

إعداد Sanctum لواجهات API

composer require laravel/sanctum

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

مثال على حماية مسار

Route::middleware(['auth:sanctum'])->group(function () {
    Route::get('/user/profile', function () {
        return auth()->user();
    });
});

Policies للتفويض

php artisan make:policy PostPolicy --model=Post

class PostPolicy
{
    public function update(User $user, Post $post)
    {
        return $user->id === $post->user_id;
    }
}

4. التحقق من صحة البيانات

التحقق من الصحة في الطلبات

class StoreUserRequest extends FormRequest
{
    public function rules()
    {
        return [
            'email' => 'required|email|unique:users',
            'password' => 'required|min:8|regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9]).*$/',
            'name' => 'required|string|max:255'
        ];
    }
}

5. إدارة الجلسات الآمنة

إعداد الجلسات

// config/session.php
return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => true,
    'secure' => true, // Pour HTTPS
];

6. الحماية من حقن SQL

استخدام الاستعلامات المهيأة

// Mauvaise pratique
$users = DB::select('select * from users where active = ' . $active);

// Bonne pratique
$users = DB::select('select * from users where active = ?', [$active]);

7. التخزين الآمن لكلمات المرور

// Dans le modèle User
public function setPasswordAttribute($value)
{
    $this->attributes['password'] = Hash::make($value);
}

8. التسجيل (Logging) والمراقبة

// config/logging.php
'channels' => [
    'security' => [
        'driver' => 'daily',
        'path' => storage_path('logs/security.log'),
        'level' => 'warning',
        'days' => 14,
    ],
],

ممارسات جيدة إضافية

  1. استخدم HTTPS في بيئة الإنتاج
  2. حدّث Laravel وتبعياته بانتظام
  3. اضبط أذونات الملفات بشكل صحيح
  4. استخدم متغيرات البيئة للمعلومات الحساسة
  5. طبّق تحديد معدل الطلبات (Rate Limiting)

خاتمة

الأمان عملية مستمرة تتطلب يقظة دائمة. يوفر Laravel العديد من الأدوات لتأمين تطبيقك، ولكن من الضروري فهمها واستخدامها بشكل صحيح.

مصادر مفيدة

InSkillCoach

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.4k
317

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!