الفرق بين المراجعتين ل"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 في ملف الإعدادات config/app.php. استخدم الأمر php artisan key:generate لإنشاء هذا المفتاح لأن أمر Artisan سيستخدم مولد بايت عشوائي آمن الخاص بلغة PHP لإنشاء مفتاحك. إذا لم تُعيّن هذه القيمة بشكل صحيح، فإن جميع القيم المشفرة بواسطة Laravel ستكون غير آمنة.
+
قبل استخدام مُشفّر [[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();
 
+
    }
    *
 
 
 
<nowiki>*</nowiki> @معامل طلب $request
 
 
 
<nowiki>*</nowiki> @معامل عدد $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) {//

}

مصادر