लेख

Laravel वेब सुरक्षा: क्रॉस-साइट अनुरोध जालसाजी (CSRF) क्या है?

इस लारवेल ट्यूटोरियल में हम वेब सुरक्षा के बारे में बात करते हैं और क्रॉस-साइट अनुरोध जालसाजी या सीएसआरएफ हमलों से वेब एप्लिकेशन को कैसे सुरक्षित करते हैं।

CSRF एक हमलावर द्वारा की गई दुर्भावनापूर्ण गतिविधि है, जो एक प्रमाणित उपयोगकर्ता की ओर से कार्य करता है, जो वेब सुरक्षा के लिए हानिकारक है। सौभाग्य से, Laravel इस प्रकार की भेद्यता को रोकने के लिए उपकरण प्रदान करता है।

सीएसआरएफ क्या है?

CSRF उपयोगकर्ता सत्रों को हाईजैक करता है। वे उपयोगकर्ता की जानकारी के बिना किसी उपयोगकर्ता को छिपे हुए फ़ॉर्म टैग या दुर्भावनापूर्ण URL (चित्र या लिंक) के माध्यम से अनुरोध सबमिट करने के लिए बरगला कर ऐसा करते हैं।

इस हमले से उपयोगकर्ता सत्र स्थिति में परिवर्तन होता है, डेटा लीक होता है, और कभी-कभी हैकर्स किसी एप्लिकेशन में अंतिम-उपयोगकर्ता डेटा में हेरफेर कर सकते हैं।

ऊपर दी गई छवि एक ऐसे परिदृश्य को दर्शाती है जहां वेब सुरक्षा का उल्लंघन होता है। पीड़ित एक लिंक (प्राप्त) पर क्लिक करके एक अनुरोध भेजता है, एक वेबसाइट सर्वर को एक अनुरोध भेजता है जो हैकर द्वारा वांछित प्रभाव उत्पन्न करेगा, जो वेबसाइट सर्वर तक पहुंचने और हेरफेर करने के लिए उपयोगी जानकारी के कब्जे में आता है।

सीएसआरएफ अनुरोधों को कैसे रोकें

इसे सुधारने के लिए सुरक्षा प्रत्येक उपयोगकर्ता सत्र में, Laravel सुरक्षित टोकन उत्पन्न करता है जिसका उपयोग यह सुनिश्चित करने के लिए करता है कि प्रमाणित उपयोगकर्ता ही एप्लिकेशन का अनुरोध कर रहा है।

क्योंकि यह टोकन हर बार एक उपयोगकर्ता सत्र के पुन: उत्पन्न होने पर बदल जाता है, एक हमलावर इसे एक्सेस नहीं कर सकता है।

जब भी सर्वर साइड (बैकएंड) पर उपयोगकर्ता की जानकारी बदलने का अनुरोध किया जाता है POSTPUTPATCHDELETE, आपको निर्देश शामिल करना होगा @csrf अनुरोध प्रपत्र में blade एचटीएमएल।  @csrf इसलिए यह एक निर्देश है Blade एप्लिकेशन द्वारा मान्य एक छिपे हुए टोकन को उत्पन्न करने के लिए उपयोग किया जाता है।

निर्देश Blade Laravel टेम्पलेट इंजन के भीतर उपयोग किया जाने वाला सिंटैक्स है जिसे कहा जाता है ब्लेड . फाइल बनाने के लिए 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 यह वेब के भीतर अनुरोधों के लिए ट्रिगर किया गया है, जो एपीआई से संबंधित नहीं है।

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

VerifyCsrfToken मिडलवेयर वर्ग का विस्तार करता है Illuminate\Foundation\Http\Middleware\VerifyCsrfToken, यानी सीएसआरएफ सत्यापन है 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);
}

कोड में यह निर्धारित करता है कि सत्र और इनपुट सीएसआरएफ टोकन मेल खाते हैं या नहीं।

समारोह दो काम करता है:

  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 में बनाया गया है। इस ऑपरेशन का नतीजा हमेशा होता है बूल (सच) या (झूठा) .

Ercole Palmeri

नवाचार समाचार पत्र
नवाचार पर सबसे महत्वपूर्ण समाचार देखना न भूलें। उन्हें ईमेल द्वारा प्राप्त करने के लिए साइन अप करें।

हाल के लेख

बच्चों के लिए रंग भरने वाले पन्नों के लाभ - सभी उम्र के लोगों के लिए जादू की दुनिया

रंग भरने के माध्यम से बढ़िया मोटर कौशल विकसित करना बच्चों को लेखन जैसे अधिक जटिल कौशल के लिए तैयार करता है। रंग भरना…

2 मई 2024

भविष्य यहाँ है: कैसे शिपिंग उद्योग वैश्विक अर्थव्यवस्था में क्रांति ला रहा है

नौसैनिक क्षेत्र एक सच्ची वैश्विक आर्थिक शक्ति है, जो 150 अरब के बाज़ार की ओर बढ़ चुका है...

1 मई 2024

आर्टिफिशियल इंटेलिजेंस द्वारा संसाधित सूचना के प्रवाह को विनियमित करने के लिए प्रकाशक और ओपनएआई ने समझौते पर हस्ताक्षर किए

पिछले सोमवार को, फाइनेंशियल टाइम्स ने OpenAI के साथ एक समझौते की घोषणा की। एफटी अपनी विश्व स्तरीय पत्रकारिता को लाइसेंस देता है...

अप्रैल 30 2024

ऑनलाइन भुगतान: यहां बताया गया है कि स्ट्रीमिंग सेवाएं आपको हमेशा के लिए भुगतान कैसे कराती हैं

लाखों लोग स्ट्रीमिंग सेवाओं के लिए मासिक सदस्यता शुल्क का भुगतान करते हैं। यह आम राय है कि आप...

अप्रैल 29 2024

अपनी भाषा में इनोवेशन पढ़ें

नवाचार समाचार पत्र
नवाचार पर सबसे महत्वपूर्ण समाचार देखना न भूलें। उन्हें ईमेल द्वारा प्राप्त करने के लिए साइन अप करें।

Seguici