تكرار السؤال: …
الإجابة المختصرة
هو مفتاح التشفير الأساسي (AES-256) لتأمين الكوكيز، والجلسات، والحقول المشفرة؛ وكشفه يتيح فك وتزوير البيانات، بينما تغييره يعطل فك تشفير البيانات السابقة.
الشرح
يستخدم Laravel مفتاح APP_KEY عبر فئة Crypt لتشفير جميع الكوكيز والرموز والبيانات المخزنة بحقول Encrypted في قاعدة البيانات. إذا تم تسريب المفتاح، يمكن للمهاجم تزوير كوكيز الجلسات والتلاعب بالصلاحيات. وإذا تم تغيير المفتاح في تطبيق قائم، فلن يتمكن الخادم من فك تشفير الكوكيز أو الحقول المشفرة السابقة (encrypted casts و Crypt) وسيفقد المستخدمون جلساتهم فوراً. أما كلمات المرور فلا تتأثر لأنها مجزأة (Hashed) بـ bcrypt أو Argon2 ولا تعتمد على APP_KEY. ولتدوير المفتاح بأمان يدعم Laravel 11+ المتغير APP_PREVIOUS_KEYS لفك تشفير البيانات القديمة أثناء الانتقال.
مثال بالكود
use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString("Sensitive Data");
$decrypted = Crypt::decryptString($encrypted);أخطاء شائعة
- تشغيل أمر php artisan key:generate على تطبيق إنتاجي حي يحتوي على بيانات مشفرة بالفعل في قاعدة البيانات.