الفرق بين المراجعتين لصفحة: «Laravel/encryption»
إنشاء صفحة التشفير |
تعديل الدوال كنص برمجي |
||
سطر 2: | سطر 2: | ||
<noinclude>{{DISPLAYTITLE:التشفير في Laravel}}</noinclude> | <noinclude>{{DISPLAYTITLE:التشفير في Laravel}}</noinclude> | ||
== المقدمة == | |||
يستخدم مُشفّر Laravel مكتبة التشفير OpenSSL لتوفير تشفير AES-256 و AES-128. ننصحك بشدة باستخدام تسهيلات التشفير المضمنة في Laravel وعدم محاولة إنشاء خوارزميات التشفير المنشأة محليًا والخاصة بك. يتم توقيع جميع قيم Laravel المشفرة باستخدام رسالة رمز الاستيثاق (message authentication code - MAC) بحيث لا عدل قيمها الأساسية بمجرد تشفيرها. | يستخدم مُشفّر Laravel مكتبة التشفير OpenSSL لتوفير تشفير AES-256 و AES-128. ننصحك بشدة باستخدام تسهيلات التشفير المضمنة في Laravel وعدم محاولة إنشاء خوارزميات التشفير المنشأة محليًا والخاصة بك. يتم توقيع جميع قيم Laravel المشفرة باستخدام رسالة رمز الاستيثاق (message authentication code - MAC) بحيث لا عدل قيمها الأساسية بمجرد تشفيرها. | ||
== الضبط == | == الضبط == | ||
قبل استخدام مُشفّر Laravel، اضبط خيار المفتاح ((key في ملف الإعدادات config/app.php. استخدم الأمر php artisan key:generate لإنشاء هذا المفتاح لأن أمر Artisan سيستخدم مولد بايت عشوائي آمن الخاص بلغة PHP لإنشاء مفتاحك. إذا لم تُعيّن هذه القيمة بشكل صحيح، فإن جميع القيم المشفرة بواسطة Laravel ستكون غير آمنة. | قبل استخدام مُشفّر Laravel، اضبط خيار المفتاح ((key في ملف الإعدادات config/app.php. استخدم الأمر <code>php artisan key:generate</code> لإنشاء هذا المفتاح لأن أمر <code>Artisan</code> سيستخدم مولد بايت عشوائي آمن الخاص بلغة PHP لإنشاء مفتاحك. إذا لم تُعيّن هذه القيمة بشكل صحيح، فإن جميع القيم المشفرة بواسطة Laravel ستكون غير آمنة. | ||
== باستخدام المُشفّر Encrypter == | == باستخدام المُشفّر Encrypter == | ||
=== تشفير قيمة === | === تشفير قيمة === | ||
يمكنك تشفير قيمة باستخدام المساعد encrypt. تشفر جميع القيم المشفرة باستخدام مكتبة التشفير OpenSSL وشفرة AES-256-CBC. علاوة على ذلك، توقع جميع القيم المشفرة باستخدام رسالة رمز الاستيثاق (MAC) للكشف عن أي تعديلات في السلسلة النصية المشفرة:<syntaxhighlight lang="php"> | يمكنك تشفير قيمة باستخدام المساعد <code>encrypt</code>. تشفر جميع القيم المشفرة باستخدام مكتبة التشفير OpenSSL وشفرة AES-256-CBC. علاوة على ذلك، توقع جميع القيم المشفرة باستخدام رسالة رمز الاستيثاق (MAC) للكشف عن أي تعديلات في السلسلة النصية المشفرة:<syntaxhighlight lang="php"> | ||
<?php | <?php | ||
namespace App\Http\Controllers; | namespace App\Http\Controllers; | ||
سطر 40: | سطر 40: | ||
تشفير دون سَلْسَلَة | تشفير دون سَلْسَلَة | ||
مرر القيم المشفرة خلال السَلْسَلَة أثناء التشفير، مما يسمح بتشفير الكائنات والمصفوفات. وبالتالي، سيحتاج عملاء غير PHP الذين يتلقون قيمًا مشفرة إلى إلغاء سَلْسَلَة البيانات. إذا كنت ترغب في تشفير وفك تشفير القيم بدون السَلْسَلَة، فيمكنك استخدام أساليب encryptString و decryptString الخاصة بواجهة Crypt:<syntaxhighlight lang="php"> | مرر القيم المشفرة خلال السَلْسَلَة أثناء التشفير، مما يسمح بتشفير الكائنات والمصفوفات. وبالتالي، سيحتاج عملاء غير PHP الذين يتلقون قيمًا مشفرة إلى إلغاء سَلْسَلَة البيانات. إذا كنت ترغب في تشفير وفك تشفير القيم بدون السَلْسَلَة، فيمكنك استخدام أساليب <code>encryptString</code> و <code>decryptString</code> الخاصة بواجهة <code>Crypt</code>:<syntaxhighlight lang="php"> | ||
use Illuminate\Support\Facades\Crypt; | use Illuminate\Support\Facades\Crypt; | ||
سطر 64: | سطر 64: | ||
== مصادر == | == مصادر == | ||
* | * [https://laravel.com/docs/5.6/encryption صفحة Encryption في توثيق Laravel الرسمي.] |
مراجعة 22:31، 29 سبتمبر 2018
المقدمة
يستخدم مُشفّر Laravel مكتبة التشفير OpenSSL لتوفير تشفير AES-256 و AES-128. ننصحك بشدة باستخدام تسهيلات التشفير المضمنة في Laravel وعدم محاولة إنشاء خوارزميات التشفير المنشأة محليًا والخاصة بك. يتم توقيع جميع قيم Laravel المشفرة باستخدام رسالة رمز الاستيثاق (message authentication code - MAC) بحيث لا عدل قيمها الأساسية بمجرد تشفيرها.
الضبط
قبل استخدام مُشفّر Laravel، اضبط خيار المفتاح ((key في ملف الإعدادات config/app.php. استخدم الأمر php artisan key:generate
لإنشاء هذا المفتاح لأن أمر Artisan
سيستخدم مولد بايت عشوائي آمن الخاص بلغة PHP لإنشاء مفتاحك. إذا لم تُعيّن هذه القيمة بشكل صحيح، فإن جميع القيم المشفرة بواسطة Laravel ستكون غير آمنة.
باستخدام المُشفّر Encrypter
تشفير قيمة
يمكنك تشفير قيمة باستخدام المساعد encrypt
. تشفر جميع القيم المشفرة باستخدام مكتبة التشفير OpenSSL وشفرة AES-256-CBC. علاوة على ذلك، توقع جميع القيم المشفرة باستخدام رسالة رمز الاستيثاق (MAC) للكشف عن أي تعديلات في السلسلة النصية المشفرة:
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* تسجيل رسالة سرية للمستخدم
*
* @معامل طلب $request
* @معامل عدد $id
* @القيمة المعادة
*/
public function storeSecret(Request $request, $id)
{
$user = User::findOrFail($id);
$user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}
?>
تشفير دون سَلْسَلَة
مرر القيم المشفرة خلال السَلْسَلَة أثناء التشفير، مما يسمح بتشفير الكائنات والمصفوفات. وبالتالي، سيحتاج عملاء غير PHP الذين يتلقون قيمًا مشفرة إلى إلغاء سَلْسَلَة البيانات. إذا كنت ترغب في تشفير وفك تشفير القيم بدون السَلْسَلَة، فيمكنك استخدام أساليب encryptString
و decryptString
الخاصة بواجهة Crypt
:
use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);
فك تشفير قيمة
يمكنك فك تشفير القيم باستخدام مساعد فك التشفير. إذا تعذر فك تشفير القيمة بشكل صحيح، على سبيل المثال عندما تكون رسالة رمز الاستيثاق ((MAC غير صالحة، فسيرمى الاستثناء Illuminate\Contracts\Encryption\DecryptException:
use Illuminate\Contracts\Encryption\DecryptException;
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {//
}