في يومنا هذا، يعد تشفير بيانات المشهد الرقمي جزءًا مهمًا من كل تطبيق ويب. تستكشف هذه المقالة سبب تطويري لحزمة تستفيد من قوة تشفير XChaCha20-Poly1305 الخاص بـ Libsodium، وكيف يمكنها تعزيز أمان تطبيق Laravel الخاص بك مع تقليل النفقات العامة.
يوفر إطار عمل Crypt Facade من Laravel واجهة ملائمة لتشفير وفك تشفير البيانات الحساسة، مثل رموز المصادقة عديمة الحالة أو إطارات الاتصالات بين الخدمات.
يعد تنفيذ تشفير الإطار الافتراضي، استنادًا إلى AES-256-CBC عبر OpenSSL، أساسًا متينًا وآمنًا بشكل عام، ولكن هناك دائمًا مجال للتحسين، خاصة عندما يكون الأداء وسهولة الاستخدام أمرًا بالغ الأهمية.
على الرغم من أن AES-256-CBC عبر OpenSSL لا يزال يعتبر آمنًا، إلا أنه أصبح قديمًا. علاوة على ذلك، فإن اعتمادها على OpenSSL يمكن أن يؤدي إلى ثغرات أمنية محتملة اعتمادًا على الإصدار والتكوين المحددين.
اعتبارًا من PHP 7.2، تم تضمين ملحق Sodium مع PHP Core. يعطي Libsodium الأولوية لبدائيات التشفير الحديثة والتي تم فحصها جيدًا مثل XChaCha20-Poly1305 وEd25519. في حين أن AES يمكن أن تكون سريعة مع تسريع الأجهزة، فإن XChaCha20-Poly1305، كتطبيق برمجي، يتفوق عليها دون تعليمات خاصة للأجهزة.
// Default AES-256-CBC Encrypter $encrypter = new Illuminate\Encryption\Encrypter($key, 'aes-256-cbc'); $start = microtime(true); $results = []; for ($i = 0; $i encrypt(['user_id' => $i]); } $elapsed = microtime(true) - $start; // 4.08 seconds
// Custom XChaCha20-Poly1305 Encrypter $encrypter = new Blu3blaze\Encrypter\Encrypter($key); $start = microtime(true); $results = []; for ($i = 0; $i encrypt(['user_id' => $i]); } $elapsed = microtime(true) - $start; // 1.79 seconds
يقوم التشفير المدمج بتشفير النص المشفر ومتجه التهيئة وقيمة العلامة كتمثيل Base64 لكائن JSON، مما يزيد بشكل كبير من طول الرمز المميز.
يؤدي التبديل إلى خوارزمية XChaCha20 إلى إلغاء الحاجة إلى تشفير JSON، ويمكن إضافة nonce إلى النص المشفر كسلسلة ثنائية.
// Default AES-256-CBC Encrypter $encrypter = new Illuminate\Encryption\Encrypter($key, 'aes-256-cbc'); $token = $encrypter->encrypt([ 'user_id' => '10296ab5-88b8-4dff-b7cf-2840b879e6dc' ]); // 312 characters
// Custom XChaCha20-Poly1305 Encrypter $encrypter = new Blu3blaze\Encrypter\Encrypter($key); $token = $encrypter->encrypt([ 'user_id' => '10296ab5-88b8-4dff-b7cf-2840b879e6dc' ]); // 139 characters
تستخدم المكتبة المضمنة متغير Base64 الأصلي. ولهذا السبب، يتطلب استخدام الرمز المميز كجزء من عنوان URL أو كأحد معلمات GET تحويلاً إضافيًا من Base64 إلى Base64URLSafe.
تشفير النص المشفر على الفور في Base64URLSafe ليس له أي عيوب ويسمح بنقل الرمز المميز بشكل آمن في أي بيئة.
1) تثبيت الحزمة عبر الملحن
composer require blu3blaze/laravel-xchacha20-encrypter
2) تعديل قائمة مقدمي الخدمة في bootstrap/providers.php
3) استمتع بواجهة Crypt مع خوارزمية XChaCha20-Poly1305
use Illuminate\Support\Facades\Crypt; $token = Crypt::encrypt([ 'user_id' => '73d430f0-d39e-4642-a37e-9ef791b90d11' ]); /* TAl1Sz4DTspE8ZzTOC6Q.....Ug5t4XcWqoiB6CWRak9Y */ $tokenData = Crypt::decrypt($token); /* ['user_id' => '73d430f0-d39e-4642-a37e-9ef791b90d11'] */خاتمة
من خلال اعتماد حزمة blu3code/laravel-xchacha20-encrypter، يمكنك الاستفادة من فوائد خوارزمية التشفير الحديثة وفتح تحسينات كبيرة في الأداء في تطبيقات Laravel الخاصة بك. ويترجم هذا إلى أوقات استجابة أسرع، وتقليل حمل الخادم، وبيئة أكثر أمانًا لبيانات المستخدمين. جربه وشاهد الفرق بنفسك!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3