آموزش اعتبارسنجی انواع هش‌ها در لاراول

در فرآیند توسعه وب‌اپلیکیشن‌ها، یکی از جنبه‌های حیاتی، استفاده از روش‌های امن برای ذخیره‌سازی و انتقال داده‌ها است. یکی از راه‌های رایج برای محافظت از اطلاعات..

انتشار: , زمان مطالعه: 5 دقیقه
آموزش اعتبارسنجی انواع هش‌ها در لاراول
دسته بندی: برنامه نویسی تعداد بازدید: 25

در فرآیند توسعه وب‌اپلیکیشن‌ها، یکی از جنبه‌های حیاتی، استفاده از روش‌های امن برای ذخیره‌سازی و انتقال داده‌ها است. یکی از راه‌های رایج برای محافظت از اطلاعات حساس مانند رمزهای عبور یا فایل‌ها، استفاده از الگوریتم‌های هش است. هش کردن به معنای تبدیل داده‌ها به یک رشته‌ ثابت طولی است که به طور یکتا از داده‌های ورودی به دست می‌آید. در این مقاله، به بررسی انواع مختلف هش‌ها و نحوه‌ی اعتبارسنجی آن‌ها در لاراول می‌پردازیم.

هش چیست؟

هش تابعی است که یک رشته با طول متغیر را به یک خروجی با طول ثابت تبدیل می‌کند. این خروجی معمولاً به صورت یک رشته از کاراکترها نمایش داده می‌شود. هش‌ها برای رمزنگاری رمز عبورها، تایید صحت فایل‌ها و بسیاری از کاربردهای دیگر استفاده می‌شوند.اما اگر به دنبال اطلاعات کاملتری از هش هستید اینجا کلیک کنید.

اعتبارسنجی هش در لاراول

لاراول یکی از فریم‌ورک‌های محبوب PHP است که قابلیت‌های پیشرفته‌ای برای اعتبارسنجی داده‌ها ارائه می‌دهد. با استفاده از اعتبارسنجی‌های از پیش‌تعریف‌شده و همچنین قابلیت تعریف قوانین اعتبارسنجی سفارشی، می‌توان انواع هش‌ها را بررسی و اعتبارسنجی کرد.

اعتبارسنجی MD5 در لاراول

MD5 هش ۳۲ کاراکتری است که شامل کاراکترهای هگزادسیمال (اعداد ۰ تا ۹ و حروف a تا f) می‌باشد. برای اعتبارسنجی MD5 در لاراول، می‌توان از یک قانون regex استفاده کرد که به‌صورت زیر پیاده‌سازی می‌شود:

<?php
//-------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email            : [email protected]
//-------------------------------------------------------------------

$validate = Validator::make($request->all(), [
    'file_hash' => ['required', 'regex:/^[a-f0-9]{32}$/i'],
]);

if ($validate->fails()) {
    return redirect()->back()->withErrors($validate)->withInput();
}

در این مثال، اعتبارسنجی به گونه‌ای تنظیم شده است که مطمئن شویم رشته ورودی شامل دقیقاً ۳۲ کاراکتر هگزادسیمال است.

اعتبارسنجی SHA-1 در لاراول

الگوریتم SHA-1 خروجی‌ای به طول ۴۰ کاراکتر دارد که از کاراکترهای هگزادسیمال تشکیل شده است. برای اعتبارسنجی SHA-1 می‌توان از کد زیر استفاده کرد:

<?php
//-------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email            : [email protected]
//-------------------------------------------------------------------

$validate = Validator::make($request->all(), [
    'file_hash' => ['required', 'regex:/^[a-f0-9]{40}$/i'],
]);

if ($validate->fails()) {
    return redirect()->back()->withErrors($validate)->withInput();
}

این کد اطمینان حاصل می‌کند که ورودی شامل دقیقاً ۴۰ کاراکتر هگزادسیمال است که معادل هش SHA-1 معتبر است.

اعتبارسنجی SHA-256 در لاراول

خروجی الگوریتم SHA-256 شامل ۶۴ کاراکتر هگزادسیمال است. برای اعتبارسنجی آن، از کد زیر استفاده می‌کنیم:

<?php
//-------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email            : [email protected]
//-------------------------------------------------------------------

$validate = Validator::make($request->all(), [
    'file_hash' => ['required', 'regex:/^[a-f0-9]{64}$/i'],
]);

if ($validate->fails()) {
    return redirect()->back()->withErrors($validate)->withInput();
}

با این کد، مطمئن می‌شویم که رشته ورودی دقیقاً ۶۴ کاراکتر هگزادسیمال دارد.

اعتبارسنجی SHA-512 در لاراول

هش SHA-512 شامل ۱۲۸ کاراکتر هگزادسیمال است و برای اعتبارسنجی آن به صورت زیر عمل می‌کنیم:

<?php
//-------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email            : [email protected]
//-------------------------------------------------------------------

$validate = Validator::make($request->all(), [
    'file_hash' => ['required', 'regex:/^[a-f0-9]{128}$/i'],
]);

if ($validate->fails()) {
    return redirect()->back()->withErrors($validate)->withInput();
}

در اینجا، ورودی باید دقیقاً شامل ۱۲۸ کاراکتر هگزادسیمال باشد.

استفاده از Ruleهای سفارشی در لاراول

اگر بخواهید قوانین پیچیده‌تر یا خاص‌تری برای اعتبارسنجی داشته باشید، می‌توانید از Ruleهای سفارشی لاراول استفاده کنید. به عنوان مثال، یک Rule سفارشی برای اعتبارسنجی انواع مختلف هش‌ها می‌تواند به شکل زیر تعریف شود:

ابتدا یک Rule سفارشی با استفاده از Artisan Command ایجاد می‌کنیم:

php artisan make:rule HashValidator

در کلاس HashValidator، منطق اعتبارسنجی را به این صورت پیاده‌سازی می‌کنیم:

<?php
//-------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email            : [email protected]
//-------------------------------------------------------------------

class HashValidator implements Rule
{
    private $type;

    public function __construct($type)
    {
        $this->type = $type;
    }

    public function passes($attribute, $value)
    {
        switch ($this->type) {
            case 'md5':
                return preg_match('/^[a-f0-9]{32}$/i', $value);
            case 'sha1':
                return preg_match('/^[a-f0-9]{40}$/i', $value);
            case 'sha256':
                return preg_match('/^[a-f0-9]{64}$/i', $value);
            case 'sha512':
                return preg_match('/^[a-f0-9]{128}$/i', $value);
            default:
                return false;
        }
    }

    public function message()
    {
        return 'The :attribute is not a valid hash.';
    }
}

سپس در اعتبارسنجی، می‌توانیم به راحتی از این Rule استفاده کنیم:

<?php
//-------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email            : [email protected]
//-------------------------------------------------------------------

$validate = Validator::make($request->all(), [
    'file_hash' => ['required', new HashValidator('sha256')],
]);

if ($validate->fails()) {
    return redirect()->back()->withErrors($validate)->withInput();
}

این روش به شما امکان می‌دهد به راحتی انواع مختلف هش‌ها را اعتبارسنجی کنید و حتی قوانین پیچیده‌تری نیز اضافه کنید.


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)