CSRF Protection در فریم ورک لاراول

CSRF Protection در فریم ورک لاراول

CSRF Protection در فریم ورک لاراول یک راه حل ساده برای جلوگیری از حملات CSRF می باشد CSRF کوتاه شده کلمات  cross-site request forgery به معنی درخواست های جعلی است پس CSRF  را می توان حملات به سایت با درخواست های جعلی عنوان کرد.

زمان مطالعه: 3 دقیقه
بازدید: 4401
پرسش و پاسخ: 0

CSRF Protection چیست؟

لاراول یک راه حل آسان با عنوان CSRF Protection برای محافظت از برنامه شما در برابر حملات جعلی پیش بینی کرده است. جعل درخواست های متقابل سایت نوعی سوءاستفاده مخرب است که به موجب آن دستورات غیرمجاز به نمایندگی از یک کاربر معتبر انجام می شود.

لاراول به طور خودکار یک توکن CSRF برای هر session ایجاد می کند از این توکن استفاده می شود تا تأیید کند کاربر معتبر شخصی است که در واقع درخواست های برنامه را انجام می دهد.

هر زمانی که شما یک فرم HTML در سایت (برنامه) خود ایجاد می کنید شما باید توکن CSRF را به فرم خود اضافه کنید تا middleware هایی که برای اعتبار سنجی درخواست های کاربران از قبل در لاراول موجود می باشند بتوانند عمل اعتبارسنجی را انجام دهند برای ایجاد این توکن در فرم های ساخته شده در blade ها باید توکن CSRF را به فرم خود اضافه کنید

@csrf // روش اول
{{ csrf_field() }}   // روش دوم

مثال در بدنه فرم

@csrf

میدل ویر  VerifyCsrfToken که در گروه middleware های web می باشد به طور خودکار تأیید می کند که توکن موجود در ورودی درخواست با توکن ذخیره شده در session مطابقت دارد.

CSRF Tokens & JavaScript

در درخواست ها از سرور با javascript (کتابخانه های مختلف javascript  مثل jquery و ... ) شما باید توکن CSRF را به درخواست های خود اضافه کنید به طور پیش فرض ، کتابخانه Axios HTTP موجود در پرونده  resources/js/bootstrap.js بطور خودکار یک هدر X-XSRF-TOKEN را با استفاده از مقدار کوکی رمزگذاری شده XSRF-TOKEN می فرستد. اگر از این کتابخانه استفاده نمی کنید ، لازم است این رفتار را برای برنامه خود به صورت دستی پیکربندی کنید.

Excluding URIs From CSRF Protection

بعضی اوقات ممکن است بخواهید مجموعه ای از URI ها را از حمایت CSRF محروم کنید. به طور معمول ، شما باید این نوع مسیرها را در خارج از گروه میان افزار وب قرار دهید که RouteServiceProvider برای کلیه مسیرها در پرونده مسیر routes/web.php اعمال می کند. با این حال ، شما همچنین می توانید مسیرها را با اضافه کردن URI های آنها به بخش $except در  میدل ویر VerifyCsrfToken رد کنید:

namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
    protected $except = [
        'http://example.com/foo/bar',
        'http://example.com/foo/*',
    ];
}

نکته : میدل ویر VerifyCsrfToken در هنگام اجرای تست، خودکار غیرفعال می شود.

X-CSRF-TOKEN

علاوه بر چک کردن توکن CSRF به عنوان یک پارامتر در درخواست ها به صورت POST، میدل ویر VerifyCsrfToken  در درخواست های شما هدر X-CSRF-TOKEN را نیز چک می کند برای ارسال هدر X-CSRF-TOKEN باید csrf_token به صورت یک تگ meta در صفحه شما موجود باشد.

<meta name="csrf-token" content="ZkLtejbXn5UvuiAEWC0er2XamrzsrwcSGxfxHokt">

سپس ، پس از ایجاد برچسب متا ، می توانید به کتابخانه ای مانند jQuery دستور دهید تا به طور خودکار این توکن  را به همه هدرهای درخواست اضافه کند. این محافظت ساده و راحت CSRF را برای برنامه های مبتنی بر AJAX شما فراهم می کند:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

X-XSRF-TOKEN

Laravel توکن CSRF فعلی را در یک کوکی رمزگذاری شده XSRF-TOKEN ذخیره می کند که با هر پاسخ تولید شده توسط این فریم ورک درج شده است. می توانید از مقدار کوکی برای تنظیم عنوان درخواست X-XSRF-TOKEN استفاده کنید.

این کوکی به راحتی می تواند توسط برخی از فریم ورک ها و کتابخانه های جاوا اسکریپت مورد استفاده قرار می گیرد مانند Angular و Axios ، که به طور خودکار مقدار خود را در عنوان X-XSRF-TOKEN در درخواستهای همان مبدا قرار می دهند. به طور پیش فرض ، پرونده resources/js/bootstrap.js شامل کتابخانه Axios HTTP است که بطور خودکار این مورد را برای شما ارسال می کند.

مطالعه بیشتر: فریمورک چیست؟

بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده