الفرق بين المراجعتين لصفحة: «Laravel/encryption»
أنشأ الصفحة ب' <noinclude>{{DISPLAYTITLE:التشفير في Laravel}}</noinclude> ==== المقدمة ==== يستخدم مُشفّر Laravel مكتبة التشفير OpenSSL لتو...' |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
(6 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:التشفير (Encryption) في 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 في ملف الإعدادات <code>config/app.php</code>. استخدم الأمر <code>php artisan key:generate</code> لإنشاء هذا المفتاح لأن أمر <code>Artisan</code> سيستخدم مولد بايت عشوائي آمن الخاص بلغة PHP لإنشاء مفتاحك. إذا لم تُعيّن هذه القيمة بشكل صحيح، فإن جميع القيم المشفرة بواسطة Laravel ستكون غير آمنة. | ||
== باستخدام المُشفّر Encrypter == | == باستخدام المُشفّر Encrypter == | ||
=== تشفير قيمة === | === تشفير قيمة === | ||
يمكنك تشفير قيمة باستخدام المساعد encrypt. تشفر جميع القيم المشفرة باستخدام مكتبة التشفير OpenSSL وشفرة AES-256-CBC. علاوة على ذلك، توقع جميع القيم المشفرة باستخدام رسالة رمز الاستيثاق (MAC) للكشف عن أي تعديلات في السلسلة النصية المشفرة: | يمكنك تشفير قيمة باستخدام المساعد <code>encrypt</code>. تشفر جميع القيم المشفرة باستخدام مكتبة التشفير OpenSSL وشفرة AES-256-CBC. علاوة على ذلك، توقع جميع القيم المشفرة باستخدام رسالة رمز الاستيثاق (MAC) للكشف عن أي تعديلات في السلسلة النصية المشفرة:<syntaxhighlight lang="php"> | ||
<?php | <?php | ||
namespace App\Http\Controllers; | namespace App\Http\Controllers; | ||
use App\User; | use App\User; | ||
use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||
use App\Http\Controllers\Controller; | use App\Http\Controllers\Controller; | ||
class UserController extends Controller | class UserController extends Controller | ||
{ | { | ||
/** | |||
* تسجيل رسالة سرية للمستخدم | |||
* | |||
* @معامل طلب $request | |||
* @معامل عدد $id | |||
* @القيمة المعادة | |||
*/ | |||
public function storeSecret(Request $request, $id) | |||
{ | |||
$user = User::findOrFail($id); | |||
$user->fill([ | |||
'secret' => encrypt($request->secret) | |||
])->save(); | |||
} | |||
} | } | ||
?> | |||
</syntaxhighlight> | |||
=== | ==== تشفير دون سَلْسَلَة ==== | ||
مرر القيم المشفرة خلال السَلْسَلَة أثناء التشفير، مما يسمح بتشفير الكائنات والمصفوفات. وبالتالي، سيحتاج عملاء غير PHP الذين يتلقون قيمًا مشفرة إلى إلغاء سَلْسَلَة البيانات. إذا كنت ترغب في تشفير وفك تشفير القيم بدون السَلْسَلَة، فيمكنك استخدام أساليب encryptString و decryptString الخاصة بواجهة Crypt: | مرر القيم المشفرة خلال السَلْسَلَة أثناء التشفير، مما يسمح بتشفير الكائنات والمصفوفات. وبالتالي، سيحتاج عملاء غير [[PHP]] الذين يتلقون قيمًا مشفرة إلى إلغاء سَلْسَلَة البيانات. إذا كنت ترغب في تشفير وفك تشفير القيم بدون السَلْسَلَة، فيمكنك استخدام أساليب <code>encryptString</code> و <code>decryptString</code> الخاصة بواجهة <code>Crypt</code>:<syntaxhighlight lang="php"> | ||
use Illuminate\Support\Facades\Crypt; | use Illuminate\Support\Facades\Crypt; | ||
سطر 65: | سطر 43: | ||
$decrypted = Crypt::decryptString($encrypted); | $decrypted = Crypt::decryptString($encrypted); | ||
</syntaxhighlight> | |||
=== فك تشفير قيمة === | ==== فك تشفير قيمة ==== | ||
يمكنك فك تشفير القيم باستخدام مساعد فك التشفير. إذا تعذر فك تشفير القيمة بشكل صحيح، على سبيل المثال عندما تكون رسالة رمز الاستيثاق ((MAC غير صالحة، فسيرمى الاستثناء Illuminate\Contracts\Encryption\DecryptException: | يمكنك فك تشفير القيم باستخدام مساعد فك التشفير. إذا تعذر فك تشفير القيمة بشكل صحيح، على سبيل المثال عندما تكون رسالة رمز الاستيثاق ((MAC غير صالحة، فسيرمى الاستثناء <code>Illuminate\Contracts\Encryption\DecryptException</code>:<syntaxhighlight lang="php"> | ||
use Illuminate\Contracts\Encryption\DecryptException; | use Illuminate\Contracts\Encryption\DecryptException; | ||
سطر 78: | سطر 56: | ||
} | } | ||
</syntaxhighlight> | |||
== مصادر == | == مصادر == | ||
* صفحة Encryption في توثيق Laravel الرسمي. | * [https://laravel.com/docs/5.6/encryption صفحة Encryption في توثيق Laravel الرسمي.] | ||
[[تصنيف:Laravel|{{SUBPAGENAME}}]] | |||
[[تصنيف:Laravel Security|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 13:59، 24 أكتوبر 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) {//
}