انتقل إلى محتوى الدرس
الدرس 43
دورة إطار العمل Laravel

تجزئة كلمات المرور والتشفير وحراس المصادقة في LaravelPassword Hashing Encryption and Authentication Guards

فهم معمارية الحراس ومزودي المصادقة وتأمين كلمات المرور بالتجزئة عبر Hash::make وتشفير البيانات الحساسة بـ Crypt.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يعتمد نظام المصادقة في Laravel داخل ملف config/auth.php على مكونين منفصلين متكاملين هما حراس المصادقة Guards ومزودو المستخدمين Providers. يحدد الحارس طريقة تتبع هوية المستخدم في كل طلب مثل جلسات الويب، بينما يحدد المزود آلية استرجاع سجل المستخدم من قاعدة البيانات عبر Eloquent.

  • حارس الجلسة (Session Guard): يحفظ حالة تسجيل دخول المستخدم عبر الطلبات المتتالية باستخدام ملفات تعريف الارتباط والجلسة.
  • مزود النماذج (Eloquent Provider): يستعلم عن حسابات المستخدمين عبر نموذج User المطبق لواجهة Authenticatable.
  • الفصل المعماري (Decoupled Design): يتيح تعدد حراس الويب والواجهات البرمجية دون تغيير منطق التطبيق.
مخطط معماري يوضح تجزئة كلمات المرور والتشفير وحراس المصادقة في Laravel في إطار العمل Laravel 12
PHP
// Inside config/auth.php
'defaults' => [
    'guard' => env('AUTH_GUARD', 'web'),
],
'guards' => [
    'web' => ['driver' => 'session', 'provider' => 'users'],
],

يُمنع تخزين كلمات المرور كنص صريح أو بتشفير قابل للعكس؛ وبدلاً من ذلك يوفر Laravel واجهة Hash لتوليد تجزئة أحادية الاتجاه بخوارزمية Bcrypt أو Argon2. تولد دالة Hash::make بصمة مملحة عشوائياً، بينما تتحقق دالة Hash::check بأمان من تطابق كلمة المرور المدخلة مع البصمة المخزنة.

  • توليد البصمة (Hash::make): تنتج تجزئة مملحة فريدة في كل مرة حتى لو تشابهت كلمتا مرور لمستخدمين مختلفين.
  • فحص التطابق (Hash::check): تقارن النص المدخل بالبصمة المخزنة بزمن ثابت يحمي من هجمات قياس التوقيت.
  • فحص الترقية (needsRehash): تكشف ما إذا كانت البصمة القديمة تحتاج إعادة تجزئة بعد زيادة جولات التكلفة.
PHP
use Illuminate\Support\Facades\Hash;

$hashed = Hash::make($request->input('password'));

if (Hash::check($plainInput, $user->password)) {
    // Password verified!
}

يتضمن نموذج User الحديث في Laravel 12 محول النوع 'password' => 'hashed' مدمجاً داخل دالة casts بشكل افتراضي. يقوم هذا المحول الذكي بتجزئة أي نص عادي يُسند إلى حقل كلمة المرور تلقائياً، كما يتجنب إعادة تجزئة القيمة إذا كانت مجزأة مسبقاً بالفعل.

  • تجزئة تلقائية عند الإسناد (Auto Hashing): بمجرد إسناد نص عادي لحقل password يتكفل النموذج بتجزئته قبل الحفظ.
  • منع التجزئة المزدوجة (Double-Hash Guard): يفحص بادئة النص ليتأكد من عدم تجزئة قيمة مجزأة مسبقاً عبر Hash::make.
  • الإخفاء عند التحويل ($hidden Array): يوضع حقل password دائماً في مصفوفة $hidden لمنع ظهوره في استجابات JSON.
PHP
protected $hidden = ['password', 'remember_token'];

protected function casts(): array
{
    return [
        'password' => 'hashed',
    ];
}

عندما يحتاج تطبيقك لتخزين بيانات سرية يجب استرجاع نصها الأصلي لاحقاً مثل مفاتيح الربط الخارجية، استخدم واجهة التشفير المتماثل Crypt. يشفر Laravel البيانات بخوارزمية AES-256-CBC مع توقيع رقمي مشتق من مفتاح التطبيق APP_KEY بحيث يؤدي أي تلاعب بالنص المشفر إلى إطلاق استثناء DecryptException.

  • تشفير النصوص (encryptString): تشفر النص وتوقعه رقمياً باستخدام مفتاح التطبيق السري APP_KEY.
  • فك التشفير الآمن (decryptString): تتحقق أولاً من سلامة التوقيع الرقمي ثم تسترجع النص الأصلي بدقة.
  • معالجة الاستثناء (DecryptException): التقط استثناء فك التشفير للتعامل الآمن مع أي بيانات تالفة أو معدلة.
PHP
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;

$cipher = Crypt::encryptString($apiToken);
$plain = Crypt::decryptString($cipher);

بدلاً من استدعاء واجهة Crypt يدوياً عند كل قراءة أو كتابة لحقل حساس، يوفر Eloquent محولات تشفير مدمجة مثل encrypted و encrypted:array. يقوم النموذج بتشفير القيمة تلقائياً قبل حفظها في قاعدة البيانات ويفك تشفيرها فور قراءتها داخل كود PHP.

  • محول النصوص المشفرة (encrypted): يشفر الحقول النصية الحساسة تلقائياً عند التخزين ويفكها عند القراءة.
  • محول المصفوفات المشفرة (encrypted:array): يحول المصفوفة إلى JSON مشفر في القاعدة ويعيدها كمصفوفة PHP جاهزة.
  • حجم عمود القاعدة (TEXT Column): استخدم نوع TEXT للأعمدة المشفرة لأن النص المشفر أطول بكثير من النص الأصلي.
PHP
protected function casts(): array
{
    return [
        'api_secret' => 'encrypted',
        'recovery_codes' => 'encrypted:array',
    ];
}

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

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحسنمعيار Laravel 12 الحديث
تخزين كلمات المروراستخدام دوال md5 أو sha1 السريعة وغير الآمنةاستخدام المحول hashed المعتمد على خوارزمية Bcrypt القوية
فحص كلمة المرورمقارنة النصوص بالمعامل العادي المعرض لهجمات التوقيتاستخدام دالة Hash::check ذات الزمن الثابت والآمن
حفظ مفاتيح الربطتخزين مفاتيح الخدمات الخارجية كنص مكشوف في القاعدةتشفيرها تلقائياً عبر المحول encrypted أو واجهة Crypt
حماية استجابات JSONتسرب بصمة كلمة المرور بالخطأ عند إرجاع كائن المستخدمإدراج الحقول الحساسة داخل مصفوفة $hidden في النموذج
PHP
$user = User::create([
    'name' => 'Sara',
    'password' => $request->input('password'), // Auto-hashed
    'api_secret' => $token,                    // Auto-encrypt
]);
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «تجزئة كلمات المرور والتشفير وحراس المصادقة في Laravel» مفاهيم حراس المصادقة ومزودو المستخدمين، وتجزئة كلمات المرور عبر Hash، والتجزئة التلقائية عبر محول Hashed وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «بناء تدفقات التسجيل والدخول والخروج وتجديد الجلسة في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Password Hashing حراس المصادقة
فهم معمارية الحراس ومزودي المصادقة وتأمين كلمات المرور بالتجزئة عبر Hash::make وتشفير البيانات الحساسة بـ Crypt.
للمراجعة
02 Authentication Guards and Providers حراس المصادقة ومزودو المستخدمين
المفهوم الهندسي والتطبيق العملي المباشر لقسم حراس المصادقة ومزودو المستخدمين في إطار العمل Laravel 12.
للمراجعة
03 Hashing Passwords With Hash Facade تجزئة كلمات المرور عبر Hash
المفهوم الهندسي والتطبيق العملي المباشر لقسم تجزئة كلمات المرور عبر Hash في إطار العمل Laravel 12.
للمراجعة
04 Automatic Hashed Model Attribute التجزئة التلقائية عبر محول Hashed
المفهوم الهندسي والتطبيق العملي المباشر لقسم التجزئة التلقائية عبر محول Hashed في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «حراس المصادقة ومزودو المستخدمين» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «تجزئة كلمات المرور عبر Hash» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من حراس المصادقة ومزودو المستخدمين في إطار العمل Laravel 12؟

يسهم حراس المصادقة ومزودو المستخدمين في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «تجزئة كلمات المرور عبر Hash» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة التجزئة التلقائية عبر محول Hashed بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة التجزئة التلقائية عبر محول Hashed.

04

لماذا يُعد تطبيق التشفير المتماثل عبر واجهة Crypt مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق تشفير حقول النماذج تلقائيا في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص التجزئة والتشفير والحراس؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.