الفرق بين المراجعتين ل"Laravel/hashing"
رؤيا-بنعطية (نقاش | مساهمات) |
رؤيا-بنعطية (نقاش | مساهمات) ط (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}') |
||
سطر 85: | سطر 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}}]] |
مراجعة 13:21، 23 أكتوبر 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');
}