প্রবন্ধ

লারাভেল ওয়েব সিকিউরিটি: ক্রস-সাইট রিকোয়েস্ট ফোরজি (CSRF) কি?

এই লারাভেল টিউটোরিয়ালে আমরা ওয়েব সিকিউরিটি এবং ক্রস-সাইট রিকোয়েস্ট ফোরজি বা CSRF আক্রমণ থেকে কীভাবে একটি ওয়েব অ্যাপ্লিকেশনকে রক্ষা করতে হয় সে সম্পর্কে কথা বলি।

CSRF হল একজন আক্রমণকারীর দ্বারা সম্পাদিত একটি দূষিত কার্যকলাপ, যিনি একজন প্রমাণীকৃত ব্যবহারকারীর পক্ষে কাজ করে, যা ওয়েব নিরাপত্তার জন্য ক্ষতিকর। সৌভাগ্যবশত, লারাভেল এই ধরনের দুর্বলতা প্রতিরোধ করার জন্য সরঞ্জাম সরবরাহ করে।

CSRF কি?

CSRF আক্রমণ ব্যবহারকারী সেশন হাইজ্যাক. তারা ব্যবহারকারীর অজান্তেই লুকানো ফর্ম ট্যাগ বা ক্ষতিকারক URL (ছবি বা লিঙ্ক) এর মাধ্যমে একটি অনুরোধ জমা দেওয়ার জন্য ব্যবহারকারীকে প্রতারণা করে এটি করে।

এই আক্রমণটি ব্যবহারকারীর সেশনের অবস্থার পরিবর্তনের দিকে নিয়ে যায়, ডেটা ফাঁস করে এবং কখনও কখনও হ্যাকাররা একটি অ্যাপ্লিকেশনে শেষ-ব্যবহারকারীর ডেটা ম্যানিপুলেট করতে পারে।

উপরের চিত্রটি এমন একটি দৃশ্যকে চিত্রিত করে যেখানে ওয়েব নিরাপত্তা লঙ্ঘিত হয়। ভিকটিম একটি লিঙ্কে ক্লিক করে (প্রাপ্ত) একটি অনুরোধ পাঠায়, একটি ওয়েবসাইট সার্ভারে একটি অনুরোধ পাঠায় যা হ্যাকার দ্বারা পছন্দসই প্রভাব তৈরি করবে, যারা ওয়েবসাইট সার্ভার অ্যাক্সেস এবং ম্যানিপুলেট করার জন্য দরকারী তথ্যের দখলে আসে।

কিভাবে CSRF অনুরোধ প্রতিরোধ করা যায়

উন্নত করতে নিরাপত্তা আপনার অ্যাপ্লিকেশনের ওয়েব, প্রতিটি ব্যবহারকারীর সেশনে, লারাভেল নিরাপদ টোকেন তৈরি করে যা এটি নিশ্চিত করতে ব্যবহার করে যে প্রমাণীকৃত ব্যবহারকারীই আবেদনের অনুরোধ করছেন।

যেহেতু এই টোকেনটি প্রতিবার ব্যবহারকারীর সেশন পুনরুত্পাদিত হওয়ার সময় পরিবর্তিত হয়, আক্রমণকারী এটি অ্যাক্সেস করতে পারে না।

যখনই সার্ভার সাইড (ব্যাকএন্ড) লাইক ব্যবহারকারীর তথ্য পরিবর্তন করার অনুরোধ আসে POSTPUTPATCHDELETE, আপনাকে অবশ্যই নির্দেশ অন্তর্ভুক্ত করতে হবে @csrf অনুরোধ ফর্মে blade এইচটিএমএল দ্য @csrf তাই এটি একটি নির্দেশনা Blade অ্যাপ্লিকেশন দ্বারা যাচাইকৃত একটি লুকানো টোকেন তৈরি করতে ব্যবহৃত হয়।

নির্দেশ Blade লারাভেল টেমপ্লেট ইঞ্জিনের মধ্যে ব্যবহৃত সিনট্যাক্স বলা হয় ব্লেড . একটি ফাইল তৈরি করতে blade আপনাকে এটির একটি নাম দিতে হবে - আমাদের কেস ফর্মে - ব্লেডের এক্সটেনশন দ্বারা অনুসরণ করা হয়। মানে ফাইলটির নাম থাকবে form.blade.php.

ফাইল ব্যবহার করা হয় blade ওয়েব পৃষ্ঠায় ব্যবহারকারীদের জন্য ভিউ রেন্ডার করতে। সেখানে কয়েকটি প্রাক-নির্দেশ রয়েছেdefiনাইটি বা ব্লেড শর্টহ্যান্ড সিনট্যাক্স আপনি ব্যবহার করতে পারেন। উদাহরণ স্বরূপ, @if একটি শর্ত সন্তুষ্ট কিনা পরীক্ষা করুন, @empty রেকর্ড খালি না কিনা পরীক্ষা করুন, @auth একটি ব্যবহারকারী প্রমাণীকরণ করা হয়েছে কিনা পরীক্ষা করুন এবং তাই।

তবে আসুন নির্দেশে ফিরে যাই @csrf. আপনি এটি কীভাবে ব্যবহার করেন তা এখানে:

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

    @csrf
    
</form>

লারাভেলের পূর্ববর্তী সংস্করণগুলির একটি ভিন্ন সেটআপ ছিল: তারা উভয়ই কাজ করে এবং একই কাজ করে।

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.
<form method="POST" action="{{route('pay')}}">
    
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
    
</form>

যখন জমা দেওয়া ফর্মের অনুরোধ থেকে CSRF টোকেন অনুপস্থিত থাকে বা যদি এটি অবৈধ বলে মনে হয়, তখন Laravel একটি 419 স্ট্যাটাস কোড সহ একটি "পৃষ্ঠা মেয়াদ শেষ" ত্রুটি বার্তা ছুড়ে দেয়।

কিভাবে এবং কোথায় CSRF যাচাইকরণ সঞ্চালিত হয়

মিডলওয়্যার VerifyCsrfToken Laravel অ্যাপ্লিকেশনের মধ্যে CSRF যাচাইকরণ পরিচালনা করে। দ্য middleware নিবন্ধিত হয় Kernel.php এবং ডিরেক্টরিতে অবস্থিত app/Http/Middleware. এর মানে হল যে middleware এটি ওয়েবের মধ্যে অনুরোধের জন্য ট্রিগার করা হয়, API-এর সাথে সম্পর্কিত নয়।

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

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.

সাম্প্রতিক নিবন্ধ

ক্যাটানিয়া পলিক্লিনিকে অ্যাপল দর্শকের সাথে অগমেন্টেড রিয়েলিটিতে উদ্ভাবনী হস্তক্ষেপ

অ্যাপল ভিশন প্রো কমার্শিয়াল ভিউয়ার ব্যবহার করে ক্যাটানিয়া পলিক্লিনিকে একটি চক্ষুরোগ অপারেশন করা হয়েছিল...

3 মে 2024

শিশুদের জন্য রঙিন পৃষ্ঠাগুলির উপকারিতা - সব বয়সের জন্য একটি জাদু বিশ্ব

রঙের মাধ্যমে সূক্ষ্ম মোটর দক্ষতার বিকাশ শিশুদের লেখার মতো জটিল দক্ষতার জন্য প্রস্তুত করে। রঙ…

2 মে 2024

ভবিষ্যত এখানে: শিপিং শিল্প কীভাবে বৈশ্বিক অর্থনীতিতে বিপ্লব ঘটাচ্ছে

নৌ সেক্টর একটি সত্যিকারের বৈশ্বিক অর্থনৈতিক শক্তি, যা 150 বিলিয়ন বাজারের দিকে নেভিগেট করেছে...

1 মে 2024

প্রকাশকরা এবং OpenAI কৃত্রিম বুদ্ধিমত্তা দ্বারা প্রক্রিয়াকৃত তথ্যের প্রবাহ নিয়ন্ত্রণ করতে চুক্তি স্বাক্ষর করে

গত সোমবার, ফাইন্যান্সিয়াল টাইমস ওপেনএআই-এর সাথে একটি চুক্তি ঘোষণা করেছে। FT তার বিশ্বমানের সাংবাদিকতার লাইসেন্স দেয়...

30 এপ্রিল 2024

আপনার ভাষায় উদ্ভাবন পড়ুন

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.

আমাদের অনুসরণ