الفرق بين المراجعتين لصفحة: «Laravel/encryption»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<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 في ملف الإعدادات <code>config/app.php</code>. استخدم الأمر <code>php artisan key:generate</code> لإنشاء هذا المفتاح لأن أمر <code>Artisan</code> سيستخدم مولد بايت عشوائي آمن الخاص بلغة PHP لإنشاء مفتاحك. إذا لم تُعيّن هذه القيمة بشكل صحيح، فإن جميع القيم المشفرة بواسطة Laravel ستكون غير آمنة. | ||
== باستخدام المُشفّر Encrypter == | == باستخدام المُشفّر Encrypter == | ||
سطر 38: | سطر 38: | ||
تشفير دون سَلْسَلَة | تشفير دون سَلْسَلَة | ||
مرر القيم المشفرة خلال السَلْسَلَة أثناء التشفير، مما يسمح بتشفير الكائنات والمصفوفات. وبالتالي، سيحتاج عملاء غير PHP الذين يتلقون قيمًا مشفرة إلى إلغاء سَلْسَلَة البيانات. إذا كنت ترغب في تشفير وفك تشفير القيم بدون السَلْسَلَة، فيمكنك استخدام أساليب <code>encryptString</code> و <code>decryptString</code> الخاصة بواجهة <code>Crypt</code>:<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; | ||
سطر 47: | سطر 47: | ||
=== فك تشفير قيمة === | === فك تشفير قيمة === | ||
يمكنك فك تشفير القيم باستخدام مساعد فك التشفير. إذا تعذر فك تشفير القيمة بشكل صحيح، على سبيل المثال عندما تكون رسالة رمز الاستيثاق ((MAC غير صالحة، فسيرمى الاستثناء Illuminate\Contracts\Encryption\DecryptException:<syntaxhighlight lang="php"> | يمكنك فك تشفير القيم باستخدام مساعد فك التشفير. إذا تعذر فك تشفير القيمة بشكل صحيح، على سبيل المثال عندما تكون رسالة رمز الاستيثاق ((MAC غير صالحة، فسيرمى الاستثناء <code>Illuminate\Contracts\Encryption\DecryptException</code>:<syntaxhighlight lang="php"> | ||
use Illuminate\Contracts\Encryption\DecryptException; | use Illuminate\Contracts\Encryption\DecryptException; | ||
مراجعة 19:48، 18 أكتوبر 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) {//
}