CSRF هڪ بدسلوڪي سرگرمي آهي جيڪو هڪ حملي ڪندڙ طرفان ڪيو ويندو آهي، جيڪو هڪ تصديق ٿيل صارف جي طرفان ڪم ڪري ٿو، ويب سيڪيورٽي لاءِ نقصانڪار آهي. خوشقسمتيء سان، Laravel هن قسم جي خطري کي روڪڻ لاء اوزار مهيا ڪري ٿو.
CSRF حملن کي اغوا ڪندڙ صارف سيشن. اهي اهو ڪندا آهن هڪ صارف کي لڪائڻ جي ذريعي درخواست جمع ڪرڻ ۾ پوشیدہ فارم ٽيگ يا بدسلوڪي URLs (تصويرون يا لنڪس) صارف جي ڄاڻ کان سواء.
اهو حملو صارف جي سيشن جي حالت ۾ تبديلي جي ڪري ٿي، ڊيٽا ليڪ، ۽ ڪڏهن ڪڏهن هيڪرز هڪ ايپليڪيشن ۾ آخري صارف جي ڊيٽا کي هٽائي سگهن ٿا.
مٿي ڏنل تصوير هڪ منظر بيان ڪري ٿي جتي ويب سيڪيورٽي جي ڀڃڪڙي ڪئي وئي آهي. مقتول هڪ لنڪ تي ڪلڪ ڪري درخواست موڪلي ٿو (وصول ٿيل)، هڪ ويب سائيٽ سرور ڏانهن هڪ درخواست موڪلي ٿو جيڪو هيڪر پاران گهربل اثر پيدا ڪندو، جيڪو ويب سائيٽ سرور تائين رسائي ۽ استعمال ڪرڻ لاء مفيد معلومات جي قبضي ۾ اچي ٿو.
کي بهتر ڪرڻ لاء سيڪيورٽي توهان جي ايپليڪيشنن جي ويب، هر يوزر سيشن ۾، Laravel محفوظ ٽوڪن ٺاهي ٿو جنهن کي اهو يقيني بڻائڻ لاءِ استعمال ڪري ٿو ته تصديق ٿيل صارف اهو ئي آهي جيڪو ايپليڪيشن جي درخواست ڪري ٿو.
ڇاڪاڻ ته هي ٽوڪن هر وقت تبديل ٿئي ٿو جڏهن هڪ صارف سيشن ٻيهر پيدا ٿئي ٿو، هڪ حملو ڪندڙ ان تائين رسائي نٿو ڪري سگهي.
جڏهن ته سرور سائڊ (backend) وانگر صارف جي معلومات کي تبديل ڪرڻ جي درخواست آهي POST
, PUT
, PATCH
e DELETE
، توھان کي ھدايت شامل ڪرڻ گھرجي @csrf
درخواست فارم ۾ blade
HTML. جي @csrf
تنهن ڪري اهو هڪ هدايت آهي Blade
ايپليڪيشن پاران تصديق ٿيل لڪيل ٽوڪن ٺاهڻ لاءِ استعمال ڪيو ويو.
هدايت Blade
Laravel ٽيمپليٽ انجڻ جي اندر استعمال ٿيل نحو سڏيو ويندو آهي پکن . فائل ٺاهڻ لاءِ 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
اهو ويب جي اندر درخواستن لاءِ شروع ڪيو ويو آهي، APIs سان لاڳاپيل ناهي.
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 ۾ ٺهيل آهي موازنہ ڪرڻ لاءِ جيڪڏهن ٻئي تار برابر آهن. هن آپريشن جو نتيجو هميشه آهي بول (سچو) يا (غلط) .
Ercole Palmeri
ڪيٽينيا پولي ڪلينڪ ۾ ايپل ويزن پرو ڪمرشل ناظر استعمال ڪندي هڪ چشمي جو آپريشن ڪيو ويو…
رنگ سازي ذريعي سٺي موٽر صلاحيتن کي ترقي ڪرڻ ٻارن کي وڌيڪ پيچيده صلاحيتن لاء تيار ڪري ٿو جهڙوڪ لکڻ. رنگ ڏيڻ…
بحري شعبي هڪ حقيقي عالمي معاشي طاقت آهي، جيڪا 150 بلين مارڪيٽ جي طرف نيويگيٽ ڪئي آهي ...
گذريل سومر، فنانشل ٽائمز OpenAI سان هڪ ڊيل جو اعلان ڪيو. ايف ٽي پنهنجي عالمي سطح جي صحافت کي لائسنس ڏئي ٿو ...