CSRF ही आक्रमणकर्त्याद्वारे केलेली दुर्भावनापूर्ण क्रिया आहे, जो प्रमाणित वापरकर्त्याच्या वतीने कृती करतो, वेब सुरक्षिततेसाठी हानिकारक आहे. सुदैवाने, लारावेल या प्रकारची असुरक्षा रोखण्यासाठी साधने प्रदान करते.
CSRF हल्ला वापरकर्ता सत्र हायजॅक. ते वापरकर्त्याच्या माहितीशिवाय लपविलेले फॉर्म टॅग किंवा दुर्भावनापूर्ण URL (इमेज किंवा लिंक) द्वारे विनंती सबमिट करण्यासाठी वापरकर्त्याला फसवून हे करतात.
या हल्ल्यामुळे वापरकर्ता सत्र स्थितीत बदल होतो, डेटा लीक होतो आणि काहीवेळा हॅकर्स अॅप्लिकेशनमधील एंड-यूजर डेटामध्ये फेरफार करू शकतात.
वरील प्रतिमा वेब सुरक्षेचा भंग झालेल्या परिस्थितीचे वर्णन करते. पीडित व्यक्ती एका लिंकवर क्लिक करून (प्राप्त) विनंती पाठवते, वेबसाइट सर्व्हरला विनंती पाठवते ज्यामुळे हॅकरला हवे असलेले प्रभाव निर्माण होतील, जो वेबसाइट सर्व्हरवर प्रवेश करण्यासाठी आणि हाताळण्यासाठी उपयुक्त माहिती ताब्यात घेतो.
सुधारण्यासाठी सुरक्षा तुमच्या ऍप्लिकेशन्सचे वेब, प्रत्येक वापरकर्ता सत्रामध्ये, Laravel सुरक्षित टोकन व्युत्पन्न करते ज्याचा वापर तो ऍप्लिकेशनची विनंती करणारा प्रमाणित वापरकर्ता असल्याची खात्री करण्यासाठी करतो.
कारण प्रत्येक वेळी वापरकर्ता सत्र पुनर्जन्म झाल्यावर हे टोकन बदलते, आक्रमणकर्ता त्यात प्रवेश करू शकत नाही.
जेव्हा जेव्हा सर्व्हर साइड (बॅकएंड) वर वापरकर्त्याची माहिती बदलण्याची विनंती असते POST
, PUT
, PATCH
e DELETE
, तुम्ही निर्देश समाविष्ट करणे आवश्यक आहे @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 स्टेटस कोडसह "पृष्ठ कालबाह्य" त्रुटी संदेश टाकते.
मिडलवेअर 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 टोकन जुळतात की नाही हे निर्धारित करते.
फंक्शन दोन गोष्टी करते:
$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 सह करार जाहीर केला. FT ने त्याच्या जागतिक दर्जाच्या पत्रकारितेचा परवाना…
लाखो लोक स्ट्रीमिंग सेवांसाठी पैसे देतात, मासिक सदस्यता शुल्क भरतात. असे सामान्य मत आहे की आपण…
Veeam द्वारे Coveware सायबर खंडणी घटना प्रतिसाद सेवा प्रदान करणे सुरू ठेवेल. Coveware फॉरेन्सिक आणि उपाय क्षमता प्रदान करेल…
वनस्पती व्यवस्थापनासाठी नाविन्यपूर्ण आणि सक्रिय दृष्टीकोनसह, भविष्यसूचक देखभाल तेल आणि वायू क्षेत्रात क्रांती घडवत आहे.…