लेख

Laravel वेब सुरक्षा: क्रॉस-साइट रिक्वेस्ट फोर्जरी (CSRF) म्हणजे काय?

या Laravel ट्युटोरियलमध्ये आम्ही वेब सिक्युरिटी आणि क्रॉस-साइट रिक्वेस्ट फोर्जरी किंवा CSRF हल्ल्यांपासून वेब अॅप्लिकेशनचे संरक्षण कसे करावे याबद्दल बोलतो.

CSRF ही आक्रमणकर्त्याद्वारे केलेली दुर्भावनापूर्ण क्रिया आहे, जो प्रमाणित वापरकर्त्याच्या वतीने कृती करतो, वेब सुरक्षिततेसाठी हानिकारक आहे. सुदैवाने, लारावेल या प्रकारची असुरक्षा रोखण्यासाठी साधने प्रदान करते.

CSRF म्हणजे काय?

CSRF हल्ला वापरकर्ता सत्र हायजॅक. ते वापरकर्त्याच्या माहितीशिवाय लपविलेले फॉर्म टॅग किंवा दुर्भावनापूर्ण URL (इमेज किंवा लिंक) द्वारे विनंती सबमिट करण्यासाठी वापरकर्त्याला फसवून हे करतात.

या हल्ल्यामुळे वापरकर्ता सत्र स्थितीत बदल होतो, डेटा लीक होतो आणि काहीवेळा हॅकर्स अॅप्लिकेशनमधील एंड-यूजर डेटामध्ये फेरफार करू शकतात.

वरील प्रतिमा वेब सुरक्षेचा भंग झालेल्या परिस्थितीचे वर्णन करते. पीडित व्यक्ती एका लिंकवर क्लिक करून (प्राप्त) विनंती पाठवते, वेबसाइट सर्व्हरला विनंती पाठवते ज्यामुळे हॅकरला हवे असलेले प्रभाव निर्माण होतील, जो वेबसाइट सर्व्हरवर प्रवेश करण्यासाठी आणि हाताळण्यासाठी उपयुक्त माहिती ताब्यात घेतो.

CSRF विनंत्या कशा रोखायच्या

सुधारण्यासाठी सुरक्षा तुमच्या ऍप्लिकेशन्सचे वेब, प्रत्येक वापरकर्ता सत्रामध्ये, Laravel सुरक्षित टोकन व्युत्पन्न करते ज्याचा वापर तो ऍप्लिकेशनची विनंती करणारा प्रमाणित वापरकर्ता असल्याची खात्री करण्यासाठी करतो.

कारण प्रत्येक वेळी वापरकर्ता सत्र पुनर्जन्म झाल्यावर हे टोकन बदलते, आक्रमणकर्ता त्यात प्रवेश करू शकत नाही.

जेव्हा जेव्हा सर्व्हर साइड (बॅकएंड) वर वापरकर्त्याची माहिती बदलण्याची विनंती असते POSTPUTPATCHDELETE, तुम्ही निर्देश समाविष्ट करणे आवश्यक आहे @csrf विनंती फॉर्म मध्ये blade HTML द @csrf त्यामुळे तो एक निर्देश आहे 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 टोकन गहाळ होते किंवा ते अवैध दिसत असल्यास, 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रात्री वर्गात.

Laravel 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 दोन्ही स्ट्रिंग्स समान असल्यास तुलना करण्यासाठी PHP मध्ये तयार केले आहे. या ऑपरेशनचा परिणाम नेहमीच असतो bool (सत्य) किंवा (असत्य) .

Ercole Palmeri

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

अलीकडील लेख

आर्टिफिशियल इंटेलिजन्सद्वारे प्रक्रिया केलेल्या माहितीच्या प्रवाहाचे नियमन करण्यासाठी प्रकाशक आणि OpenAI करारांवर स्वाक्षरी करतात

गेल्या सोमवारी, फायनान्शिअल टाईम्सने OpenAI सह करार जाहीर केला. FT ने त्याच्या जागतिक दर्जाच्या पत्रकारितेचा परवाना…

30 एप्रिल 2024

ऑनलाइन पेमेंट: स्ट्रीमिंग सेवा तुम्हाला कायमचे पैसे कसे देतात ते येथे आहे

लाखो लोक स्ट्रीमिंग सेवांसाठी पैसे देतात, मासिक सदस्यता शुल्क भरतात. असे सामान्य मत आहे की आपण…

29 एप्रिल 2024

Veeam मध्ये रॅन्समवेअरसाठी सर्वात व्यापक समर्थन, संरक्षणापासून प्रतिसाद आणि पुनर्प्राप्तीपर्यंत वैशिष्ट्ये आहेत

Veeam द्वारे Coveware सायबर खंडणी घटना प्रतिसाद सेवा प्रदान करणे सुरू ठेवेल. Coveware फॉरेन्सिक आणि उपाय क्षमता प्रदान करेल…

23 एप्रिल 2024

हरित आणि डिजिटल क्रांती: भविष्यसूचक देखभाल तेल आणि वायू उद्योगात कशी बदल घडवत आहे

वनस्पती व्यवस्थापनासाठी नाविन्यपूर्ण आणि सक्रिय दृष्टीकोनसह, भविष्यसूचक देखभाल तेल आणि वायू क्षेत्रात क्रांती घडवत आहे.…

22 एप्रिल 2024

तुमच्या भाषेत इनोव्हेशन वाचा

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

आमचे अनुसरण करा