الفرق بين المراجعتين لصفحة: «Laravel/hashing»
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
رؤيا-بنعطية (نقاش | مساهمات) لا ملخص تعديل |
||
(3 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:التجزئة في Laravel}}</noinclude> | <noinclude>{{DISPLAYTITLE:التجزئة (Hashing) في Laravel}}</noinclude> | ||
== | == مقدمة == | ||
تقدم واجهة التجزئة الخاصة بإطار Laravel تجزئة <code>Bcrypt</code> و <code>Argon2</code> آمنة لتخزين كلمات مرور المستخدم. إذا كنت تستخدم الصنفين الداخليين <code>(Built-in classes) LoginController</code> و <code>RegisterController</code> المتضمنين مع تطبيق Laravel الخاص بك، فإنهما يستخدمان Bcrypt للتسجيل والاستيثاق تلقائيًا. | تقدم واجهة التجزئة الخاصة بإطار [[Laravel]] تجزئة <code>Bcrypt</code> و <code>Argon2</code> آمنة لتخزين كلمات مرور المستخدم. إذا كنت تستخدم الصنفين الداخليين <code>(Built-in classes) LoginController</code> و <code>RegisterController</code> المتضمنين مع تطبيق [[Laravel]] الخاص بك، فإنهما يستخدمان Bcrypt للتسجيل والاستيثاق تلقائيًا. | ||
ملاحظة: يعدّ Bcrypt خيارًا رائعًا لتجزئة كلمات المرور لأن "عامل العمل" الخاص به قابل للتعديل، مما يعني أنه يمكن زيادة الوقت المستغرق لإنشاء تجزئة كلما زادت طاقة المعدات. | ملاحظة: يعدّ Bcrypt خيارًا رائعًا لتجزئة كلمات المرور لأن "عامل العمل" الخاص به قابل للتعديل، مما يعني أنه يمكن زيادة الوقت المستغرق لإنشاء تجزئة كلما زادت طاقة المعدات. | ||
== الضبط == | == الضبط == | ||
يُضبط محرك تشغيل التجزئة التلقائي الخاص بتطبيقك في ملف الإعدادات config/hashing.php. يوجد حاليا محركي تشغيل معتمدين : Bcrypt و Argon2. | يُضبط محرك تشغيل التجزئة التلقائي الخاص بتطبيقك في ملف الإعدادات <code>config/hashing.php</code>. يوجد حاليا محركي تشغيل معتمدين : Bcrypt و Argon2. | ||
تحذير: محرك التشغيل Argon2 يتطلب PHP 7.2.0 فما فوق. | تحذير: محرك التشغيل Argon2 يتطلب PHP 7.2.0 فما فوق. | ||
سطر 17: | سطر 17: | ||
use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||
use Illuminate\Support\Facades\Hash; | use Illuminate\Support\Facades\Hash; | ||
use App\Http\Controllers\Controller; | use App\Http\Controllers\Controller; | ||
class UpdatePasswordController extends Controller | class UpdatePasswordController extends Controller | ||
{ | { | ||
/** | /** | ||
* تحديث كلمة مرور المستخدم. | * تحديث كلمة مرور المستخدم. | ||
* | * | ||
* @مدخلات طلب $request | * @مدخلات طلب $request | ||
* @تعيد الجواب | * @تعيد الجواب | ||
*/ | */ | ||
public function update(Request $request) | public function update(Request $request) | ||
{ | { | ||
// التحقق من طول كلمة المرور الجديدة ... | // التحقق من طول كلمة المرور الجديدة ... | ||
$request->user()->fill([ | $request->user()->fill([ | ||
'password' => Hash::make($request->newPassword) | 'password' => Hash::make($request->newPassword) | ||
])->save(); | ])->save(); | ||
} | } | ||
} | } | ||
?> | ?> | ||
سطر 71: | سطر 57: | ||
'memory' => 1024, | 'memory' => 1024, | ||
'time' => 2, | 'time' => 2, | ||
'threads' => 2, | 'threads' => 2, | ||
سطر 79: | سطر 63: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
ملاحظة: للمزيد من المعلومات حول هذه الخصائص، اطلع على وثائق PHP الرسمية. | ملاحظة: للمزيد من المعلومات حول هذه الخصائص، اطلع على وثائق [[PHP]] الرسمية. | ||
=== التحقق من كلمة المرور مقابل التجزئة === | === التحقق من كلمة المرور مقابل التجزئة === | ||
سطر 101: | سطر 85: | ||
== مصادر == | == مصادر == | ||
* [https://laravel.com/docs/5.6/hashing صفحة Hashing في توثيق Laravel الرسمي.] | * [https://laravel.com/docs/5.6/hashing صفحة Hashing في توثيق Laravel الرسمي.] | ||
[[تصنيف:Laravel]] | [[تصنيف:Laravel|{{SUBPAGENAME}}]] | ||
[[تصنيف:Laravel Security]] | [[تصنيف:Laravel Security|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 14:00، 24 أكتوبر 2018
مقدمة
تقدم واجهة التجزئة الخاصة بإطار Laravel تجزئة Bcrypt
و Argon2
آمنة لتخزين كلمات مرور المستخدم. إذا كنت تستخدم الصنفين الداخليين (Built-in classes) LoginController
و RegisterController
المتضمنين مع تطبيق Laravel الخاص بك، فإنهما يستخدمان Bcrypt للتسجيل والاستيثاق تلقائيًا.
ملاحظة: يعدّ Bcrypt خيارًا رائعًا لتجزئة كلمات المرور لأن "عامل العمل" الخاص به قابل للتعديل، مما يعني أنه يمكن زيادة الوقت المستغرق لإنشاء تجزئة كلما زادت طاقة المعدات.
الضبط
يُضبط محرك تشغيل التجزئة التلقائي الخاص بتطبيقك في ملف الإعدادات config/hashing.php
. يوجد حاليا محركي تشغيل معتمدين : Bcrypt و Argon2.
تحذير: محرك التشغيل Argon2 يتطلب PHP 7.2.0 فما فوق.
الاستخدام الأساسي
يمكنك تجزئة كلمة مرور عن طريق استدعاء تابع الإنشاء في واجهة التجزئة.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;
class UpdatePasswordController extends Controller
{
/**
* تحديث كلمة مرور المستخدم.
*
* @مدخلات طلب $request
* @تعيد الجواب
*/
public function update(Request $request)
{
// التحقق من طول كلمة المرور الجديدة ...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
?>
تعديل عامل العمل Bcrypt
إذا كنت تستخدم خوارزمية Bcrypt
، سيمكنك تابع الإنشاء make
من التحكم بعامل العمل للخوارزمية باستخدام الخيار rounds
; مع ذلك، الوضع الافتراضي مقبول لأغلبية التطبيقات :
$hashed = Hash::make('password', [
'rounds' => 12
]);
تعديل عامل العمل Argon2
إذا كنت تستخدم خوارزمية Argon2
، سيمكنك تابع الإنشاء make
من التحكم بعامل العمل للخوارزمية باستخدام الخيارات memory
و time
و threads
; مع ذلك، الوضع الافتراضي مقبول لأغلبية التطبيقات :
$hashed = Hash::make('password', [
'memory' => 1024,
'time' => 2,
'threads' => 2,
]);
ملاحظة: للمزيد من المعلومات حول هذه الخصائص، اطلع على وثائق PHP الرسمية.
التحقق من كلمة المرور مقابل التجزئة
يسمح لك تابع التحقق check
من التحقق من أن سلسلة نص معينة تتطابق مع تجزئة معينة. ومع ذلك، إذا كنت تستخدم وحدة التحكم LoginController
المتضمنة مع Laravel، فربما لن تحتاج إلى استخدام هذا مباشرة، لأن وحدة التحكم هذه تقوم تلقائيا باستدعاء هذا التابع:
if (Hash::check('plain-text', $hashedPassword)) {
// كلمات المرور تطابق ...
}
التحقق من ما إذا كانت كلمة مرور بحاجة لإعادة تجزئة
تسمح لك الدالة needsRehash
بتحديد ما إذا كان عامل العمل المستخدم من طرف المجزأ قد تغير منذ أن تمت تجزئة كلمة المرور:
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}