بیشتر

Laravel ویب امنیت: د کراس سایټ غوښتنه جعل (CSRF) څه شی دی؟

په دې لاراویل ټیوټوریل کې موږ د ویب امنیت په اړه خبرې کوو او څنګه د ویب اپلیکیشن د کراس سایټ غوښتنې جعل یا CSRF بریدونو څخه ساتنه وکړو.

CSRF یو ناوړه فعالیت دی چې د برید کونکي لخوا ترسره کیږي، څوک چې د یو مستند کارونکي په استازیتوب کړنې ترسره کوي، د ویب امنیت ته زیان رسوي. خوشبختانه، لارویل د دې ډول زیان مننې مخنیوي لپاره وسایل چمتو کوي.

CSRF څه شی دی؟

د CSRF بریدونه د کاروونکي ناستې برمته کوي. دوی دا کار د یو کارونکي د پټ فارم ټګونو یا ناوړه URLs (انځورونو یا لینکونو) له لارې د غوښتنې سپارلو لپاره د کارونکي له پوهې پرته ترسره کوي.

دا برید د کارونکي سیشن حالت کې د بدلون لامل کیږي ، د معلوماتو لیک او ځینې وختونه هیکران کولی شي په غوښتنلیک کې د پای کارونکي ډیټا اداره کړي.

پورته عکس یو سناریو ښیې چیرې چې د ویب امنیت سرغړونه کیږي. قرباني په یوه لینک (ترلاسه شوي) باندې کلیک کولو سره غوښتنه لیږي، د ویب پاڼې سرور ته د غوښتنې لیږل چې د هیکر لخوا غوښتل شوي اغیزې رامینځته کړي، څوک چې د ویب پاڼې سرور ته د لاسرسي او سمبالولو لپاره ګټور معلومات په واک کې لري.

د CSRF غوښتنو څخه د مخنیوي څرنګوالی

د ښه کولو لپاره د امنيت ستاسو د غوښتنلیکونو ویب، د کارونکي په هره ناسته کې، لاراول خوندي ټوکنونه تولیدوي کوم چې دا د دې لپاره کاروي چې ډاډ ترلاسه کړي چې مستند کاروونکي هغه څوک دی چې د غوښتنلیک غوښتنه کوي.

ځکه چې دا نښه هرکله چې د کارونکي سیشن له سره رامینځته کیږي بدلیږي ، برید کونکی نشي کولی ورته لاسرسی ومومي.

هرکله چې د سرور اړخ (بیک اینڈ) په څیر د کارونکي معلوماتو بدلولو غوښتنه شتون ولري POSTPUTPATCHDELETE، تاسو باید لارښود شامل کړئ @csrf د غوښتنې په فورمه کې blade HTML. د @csrf نو دا یو لارښود دی Blade د غوښتنلیک لخوا تایید شوي پټ نښه تولید لپاره کارول کیږي.

لارښود Blade هغه ترکیب دی چې د لارویل ټیمپلیټ انجن کې کارول کیږي چې ویل کیږي Blade . د فایل جوړولو لپاره blade تاسو باید دې ته یو نوم ورکړئ - زموږ د قضیې په شکل کې - وروسته د تیغ غزول. دا پدې مانا ده چې فایل به نوم ولري form.blade.php.

فایل کارول کیږي blade په ویب پاڼه کې د کاروونکو لپاره د نظرونو وړاندې کولو لپاره یو څو مخکینۍ لارښوونې شتون لريdefiنایټ یا بلیډ شارټ هینډ ترکیب چې تاسو یې کارولی شئ. د مثال په ډول، @if وګورئ چې ایا شرایط راضي دي، @empty وګورئ که ریکارډونه خالي نه وي، @auth وګورئ چې ایا یو کارن تصدیق شوی او داسې نور.

مګر راځئ چې بیرته لارښوونې ته لاړ شو @csrf. دلته دا دی چې تاسو یې څنګه کاروئ:

<form method="POST" action="{{route('pay')}}">

    @csrf
    
</form>

د Laravel پخوانۍ نسخې یو مختلف ترتیب درلود: دوی دواړه کار کوي او ورته کار کوي.

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

کله چې د CSRF نښه د سپارلو فورمې غوښتنې څخه ورکه وي یا که دا ناباوره ښکاري، لاراویل د 419 حالت کوډ سره د "پاڼې پای ته رسید" خطا پیغام وغورځوي.

د CSRF تصدیق څنګه او چیرته ترسره کیږي

منځنی وسايل VerifyCsrfToken د Laravel غوښتنلیک کې د CSRF تایید اداره کوي. د middleware کې ثبت دی Kernel.php او په ډایرکټر کې موقعیت لري app/Http/Middleware. دا پدې مانا ده چې د middleware دا په ویب کې د غوښتنو لپاره پیل شوی، د APIs پورې اړه نلري.

protected $middlewareGroups = [
        'web' => [
           .
           .
           .
           .
           .
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],
    ];

د VerifyCsrfToken مډل ویئر ټولګي پراخوي Illuminate\Foundation\Http\Middleware\VerifyCsrfToken، د بیلګې په توګه د CSRF تصدیق دی defiپه ټولګي کې دننه

راځئ چې ژور کیندنه وکړو ترڅو معلومه کړو چې لارویل څنګه د CSRF تایید اداره کوي.

د ټولګي دننه، موږ فعالیت لرو tokensMatch.

protected function tokensMatch($request)
{
     $token = $this->getTokenFromRequest($request);

     return is_string($request->session()->token()) &&
            is_string($token) &&
            hash_equals($request->session()->token(), $token);
}

په کوډ کې دا ټاکي چې ایا سیشن او ان پټ CSRF ټوکن سره سمون لري.

فعالیت دوه شیان ترسره کوي:

  1. ترلاسه کول $this->getTokenFromRequest د راتلونکي غوښتنې نښه د پټې ساحې یا د غوښتنې سرلیک له لارې ضمیمه شوې. ټوکن کوډ شوی او بیا د ټوکن تغیر ته راستون شوی.
protected function getTokenFromRequest($request)
{
    $token = $request->input('_token') ?: $request->header('X-CSRF-TOKEN');

    if (! $token && $header = $request->header('X-XSRF-TOKEN')) {
        try {
            $token = CookieValuePrefix::remove($this->encrypter->decrypt($header, static::serialized()));
        } catch (DecryptException $e) {
            $token = '';
            }
    }

    return $token;
}

په کوډ کې دا د سرلیک څخه نښه کیږي

2. د غوښتنې نښه او ناسته دواړه یو تار ته واچوئ او بیا یې وکاروئ hash_equals په پی ایچ پی کې جوړ شوی ترڅو پرتله کړي که دواړه تارونه مساوي وي. د دې عملیاتو پایله تل ده بول (رښتیا) یا (غلط) .

Ercole Palmeri

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

وروستي مقالې

خپرونکي او OpenAI تړونونه لاسلیک کوي ترڅو د مصنوعي استخباراتو لخوا پروسس شوي معلوماتو جریان تنظیم کړي

تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...

30 اپریل 2024

آنلاین تادیات: دلته د سټیمینګ خدمات تاسو ته د تل لپاره تادیه کوي

ملیونونه خلک د سټیمینګ خدماتو لپاره تادیه کوي ، د میاشتنۍ ګډون فیس ورکوي. دا عام نظر دی چې تاسو…

29 اپریل 2024

Veeam د ransomware لپاره خورا پراخه ملاتړ وړاندې کوي ، له محافظت څخه تر غبرګون او رغیدو پورې

د Veeam لخوا Coveware به د سایبر غصب پیښو غبرګون خدماتو چمتو کولو ته دوام ورکړي. Coveware به د عدلي او درملنې وړتیاوې وړاندې کړي ...

23 اپریل 2024

شنه او ډیجیټل انقلاب: د وړاندوینې وړ ساتنه څنګه د تیلو او ګاز صنعت بدلوي

د وړاندوینې ساتنه د تیلو او ګاز سکتور کې انقلاب رامینځته کوي ، د نبات مدیریت لپاره د نوښت او فعال چلند سره.

22 اپریل 2024

نوښت په خپله ژبه ولولئ

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

مونږ سره په