الأمان في 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,
],
],
ممارسات جيدة إضافية
- استخدم HTTPS في بيئة الإنتاج
- حدّث Laravel وتبعياته بانتظام
- اضبط أذونات الملفات بشكل صحيح
- استخدم متغيرات البيئة للمعلومات الحساسة
- طبّق تحديد معدل الطلبات (Rate Limiting)
خاتمة
الأمان عملية مستمرة تتطلب يقظة دائمة. يوفر Laravel العديد من الأدوات لتأمين تطبيقك، ولكن من الضروري فهمها واستخدامها بشكل صحيح.
مصادر مفيدة
نبذة عن 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 للمشاركة في النقاش