CSRF ایک بدنیتی پر مبنی سرگرمی ہے جو ایک حملہ آور کی طرف سے کی جاتی ہے، جو ایک مستند صارف کی جانب سے کارروائیاں کرتا ہے، جو ویب سیکیورٹی کے لیے نقصان دہ ہے۔ خوش قسمتی سے، Laravel اس قسم کے خطرے کو روکنے کے لیے آلات فراہم کرتا ہے۔
سی ایس آر ایف کا حملہ یوزر سیشن کو ہائی جیک کرتا ہے۔ وہ صارف کی معلومات کے بغیر چھپے ہوئے فارم ٹیگز یا بدنیتی پر مبنی یو آر ایل (تصاویر یا لنکس) کے ذریعے درخواست جمع کرانے کے لیے صارف کو دھوکہ دے کر ایسا کرتے ہیں۔
یہ حملہ صارف کے سیشن کی حالت میں تبدیلی کا باعث بنتا ہے، ڈیٹا لیک ہو جاتا ہے اور بعض اوقات ہیکرز کسی ایپلیکیشن میں صارف کے آخری ڈیٹا میں ہیرا پھیری کر سکتے ہیں۔
اوپر کی تصویر ایک ایسے منظر نامے کی وضاحت کرتی ہے جہاں ویب سیکیورٹی کی خلاف ورزی ہوتی ہے۔ متاثرہ شخص ایک لنک پر کلک کرکے درخواست بھیجتا ہے (وصول شدہ)، ویب سائٹ کے سرور کو درخواست بھیجتا ہے جس سے ہیکر کے مطلوبہ اثرات مرتب ہوں گے، جو ویب سائٹ سرور تک رسائی اور ہیرا پھیری کے لیے مفید معلومات کے قبضے میں آجاتا ہے۔
کو بہتر بنانے کے لیے سیکورٹی آپ کی ایپلی کیشنز کے ویب پر، ہر صارف سیشن میں، Laravel محفوظ ٹوکنز تیار کرتا ہے جسے وہ اس بات کو یقینی بنانے کے لیے استعمال کرتا ہے کہ تصدیق شدہ صارف وہی ہے جو درخواست کی درخواست کرتا ہے۔
چونکہ یہ ٹوکن ہر بار صارف کے سیشن کو دوبارہ تخلیق کرنے پر تبدیل ہوتا ہے، حملہ آور اس تک رسائی حاصل نہیں کر سکتا۔
جب بھی سرور سائڈ (بیک اینڈ) جیسے صارف کی معلومات کو تبدیل کرنے کی درخواست ہوتی ہے۔ POST
, PUT
, PATCH
e DELETE
، آپ کو ہدایت شامل کرنا ضروری ہے۔ @csrf
درخواست فارم میں blade
ایچ ٹی ایم ایل دی @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
اگر دونوں تار برابر ہیں تو موازنہ کرنے کے لیے پی ایچ پی میں بنایا گیا ہے۔ اس آپریشن کا نتیجہ ہمیشہ ہوتا ہے۔ bool (سچ) یا (غلط) .
Ercole Palmeri
Veeam کی طرف سے Coveware سائبر بھتہ خوری کے واقعات کے ردعمل کی خدمات فراہم کرتا رہے گا۔ Coveware فرانزک اور تدارک کی صلاحیتیں پیش کرے گا…
پیشن گوئی کی دیکھ بھال تیل اور گیس کے شعبے میں انقلاب برپا کر رہی ہے، پلانٹ کے انتظام کے لیے ایک جدید اور فعال نقطہ نظر کے ساتھ۔
UK CMA نے مصنوعی ذہانت کے بازار میں بگ ٹیک کے رویے کے بارے میں ایک انتباہ جاری کیا ہے۔ وہاں…
عمارتوں کی توانائی کی کارکردگی کو بڑھانے کے لیے یورپی یونین کی طرف سے تیار کردہ "گرین ہاؤسز" فرمان نے اپنے قانون سازی کے عمل کو اس کے ساتھ ختم کیا ہے…